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

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

  • 相关阅读:
    2011年3月21日星期一
    AutoCAD VBA尺寸标注
    2011年3月22日星期二
    The method isEmpty() is undefined for the type String/String类型的isEmpty报错
    安全沙箱冲突..Error #2044: 未处理的 securityError:。 text=Error #2048: 安全沙箱冲
    Flash Builder4.6 无法启动,并且报 Failed to create the Java Virtual Machine (2—可能更好些)
    Flash Builder4.6 入门Demo_trace
    去掉JW Player水印及右键官方菜单
    JS如何判断单个radio是否被选中
    用JSON报错 java.lang.ClassNotFoundException: org.apache.commons.lang.exception.NestableRuntimeExcept .
  • 原文地址:https://www.cnblogs.com/zjsy/p/4451365.html
Copyright © 2020-2023  润新知