设计模式_01_单一原则

设计模式_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+"吸空气");

    }

}

 

各有优点,取舍有度才能做到游刃有余

 

你可能感兴趣的:(设计模式)