设计模式设计原则之单一职责原则

原始需求:设计一个动物类,实现他移动方法

class Animal {
    /**
     * 移动
     * @param animalType 动物类型
     */
    public void move(String animalType) {
        System.out.printf(animalType + "在路上跑");
    }
}

需求变更:实现鸟、鱼的移动方法

//写法一
class Animal {
    /**
     * 移动
     * @param animalType 动物类型
     */
    public void move(String animalType) {
        if ("鸟".equals(animalType)) {
            System.out.printf(animalType + "在天上飞");
        } else if ("鱼".equals(animalType)) {
            System.out.printf(animalType + "在水里游");
        } else if ("老虎".equals(animalType)) {
            System.out.printf(animalType + "在路上跑");
        }
    }
}

写法一:违反了单一职责原则,代码很臃肿,降低了代码的可读性、可维护性。假如将来某一天,我们需要修改鸟的移动方法。存在的风险是可能影响到老虎、鱼的移动方法。

//写法二
class Animal {
    public void birdMove() {
        System.out.printf("鸟在天上飞");
    }

    public void tigerMove() {
        System.out.printf("老虎在路上跑");
    }

    public void fishMove() {
        System.out.printf("鱼在水里游");
    }
}

写法二:在方法级别上遵守的单一职责原则,在逻辑足够简单,类中方法少的情况下可使用。需求变更不会影响到其他方法。

//写法三
class Bird{
    public void move() {
        System.out.printf("鸟在天上飞");
    }
}
class Tiger{
    public void move() {
        System.out.printf("老虎在路上跑");
    }
}
class Fish{
    public void move() {
        System.out.printf("鱼在水里游");
    }
}

方式三:将类分解,完全遵守单一职责原则,但是这样的修改成本过高,类分解的过多,改动的地方也比较多。在实际情况中还需综合考虑使用

单一职责原则的注意事项

  • 降低类的复杂度,一个类只负责维护一项职责
  • 提高类的可读性,可维护性
  • 降低变更引起的风险
  • 通常情况下,应该遵守单一职责原则,只有逻辑足够的简单,才可在代码级违反单一职责原则,类中的方法足够的少,可以在方法级别上保持单一职责原则。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值