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+"吸空气");
        }
    }

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

  • 相关阅读:
    linux:安装php7.x
    linux:搭建 WordPress 个人站点
    linux:lnmp环境
    knn初了解
    Pycharm:鼠标滚动控制字体大小
    数据集的获取
    弄懂Java的自增变量
    面试中的volatile关键字
    Java的类锁、对象锁和方法锁
    Error creating bean with name 'entityManagerFactory' defined in class path resource解决方案
  • 原文地址:https://www.cnblogs.com/zjsy/p/4451365.html
Copyright © 2011-2022 走看看