zoukankan      html  css  js  c++  java
  • 设计模式_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+"吸空气");
        }
    }

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

  • 相关阅读:
    Java实现 蓝桥杯VIP 算法提高 排队打水问题
    Java实现 蓝桥杯VIP 算法提高 排队打水问题
    Java实现 蓝桥杯VIP 算法提高 排队打水问题
    Java实现 蓝桥杯VIP 算法提高 特殊的质数肋骨
    Java实现 蓝桥杯VIP 算法提高 特殊的质数肋骨
    Java实现 蓝桥杯VIP 算法提高 特殊的质数肋骨
    Java实现 蓝桥杯VIP 算法提高 特殊的质数肋骨
    现在使用控件, 更喜欢继承(覆盖控件已有的函数,很奇怪的一种使用方式)
    Controls 属性与继承 TShape 类的小练习(使用TShape可以解决很多图形问题)
    QT创建窗口程序、消息循环和WinMain函数(为主线程建立了一个QEventLoop,并执行exec函数)
  • 原文地址:https://www.cnblogs.com/zjsy/p/4451365.html
Copyright © 2011-2022 走看看