设计模式_01_单一原则
package designPatternOf_01; /*** 单一原则示例:动物呼吸* 引入的问题:鱼不吸空气,吸水*/ public class SinglePrinciple_01 {public static void main(String[] args) {Animal animal=new Animal();animal.breath("小猫");animal.breath("小兔");animal.breath("小狗");} } class Animal{public void breath(String animal){System.out.println(animal+"吸空气!");} }
package designPatternOf_01; /*** 单一原则示例:动物呼吸* 1、问题:鱼不吸空气,吸水* 2、解决问题(遵循单一原则,复杂):水生动物Terrestre、陆生动物Aquatic* 3、复杂问题:要客户端(main方法)需要修改,又要修改处理类需要修改*/ public class SinglePrinciple_02 {public static void main(String[] args) {Terrestre terrestre=new Terrestre();terrestre.breath("小猫:");terrestre.breath("小狗:");terrestre.breath("小兔:");Aquatic aquatic=new Aquatic();aquatic.breath("小鱼");} }/*** 陆生动物*/ class Terrestre{public void breath(String animal){System.out.println(animal+"吸空气!");} } /*** 水生动物*/ class Aquatic{public void breath(String animal){System.out.println(animal+"吸空气!");} }
package designPatternOf_01; /*** 单一原则示例:动物呼吸* 1、引入的问题:鱼不吸空气,吸水* 2、解决问题:直接修改客户端(SinglePrinciple_03类:main):(违背单一原则,代码级别上违背,却简单)* 3、修改简单,问题来了:如果有一天将鱼分为淡水、海水鱼,如果牛也吸水了...*/ public class SinglePrinciple_03 {public static void main(String[] args) {Animal03 animal03=new Animal03();animal03.breath("小猫:");animal03.breath("小狗:");animal03.breath("小兔:");animal03.breath("小鱼");} }class Animal03{public void breath(String animal){if(animal.equals("小鱼")){System.out.println(animal+"吸水!");}else {System.out.println(animal+"吸空气!");}} }
package designPatternOf_01; /*** 单一原则示例:动物呼吸* 1、引入的问题:鱼不吸空气,吸水* 2、直接修改客户端(SinglePrinciple_03类:main)* 3、解决问题(违背单一原则,方法级别上违背):如果有一天将鱼分为淡水、海水鱼,如果牛也吸水了...*/ public class SinglePrinciple_04 {public static void main(String[] args) {Animal04 animal04=new Animal04();animal04.breath_0("小猫:");animal04.breath_1("小狗:");animal04.breath_0("小兔:");animal04.breath_1("小鱼:");} }class Animal04{public void breath_0(String animal){System.out.println(animal+"吸水!");}public void breath_1(String animal){System.out.println(animal+"吸空气");} }
各有优点,取舍有度才能做到游刃有余