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

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

  • 相关阅读:
    项目职责
    hibernate配置文件hibernate.cfg.xml的详细解释
    Hibernate环境搭建
    struts2标签使用详解
    EL表达式
    getparameter()和getattribution()的区别的 java详细
    形式参数和实在参数
    JSTL详解实例
    论文ei,sci检索,JCR-SCI分区,中科院分区连接
    随机森林实例
  • 原文地址:https://www.cnblogs.com/zjsy/p/4451365.html
Copyright © 2011-2022 走看看