• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
第二天半
博客园    首页    新随笔    联系   管理    订阅  订阅

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

 

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

 

posted @ 2015-04-23 18:20  第二天半  阅读(139)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3