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 mysql开启远程链接
    Nginx 下无法读取session 导致 thinkphp验证码错误
    Nginx 开启 path_info功能
    让chrome打开手机网页
    vue 组件和全局组件的注册、使用
    Vue 导入文件import、路径@和.的区别
    vue 打包路径不对设置方法
    id
    Ajax GET 和 POST 的区别
    前端笔试题汇总 2018/12/04 (2)
  • 原文地址:https://www.cnblogs.com/zjsy/p/4451365.html
Copyright © 2011-2022 走看看