面向对象设计之单一职责原则(SRP)

       单一职责的核心思想就是:系统中的每一个对象都应该只有一个单独的职责,而所有对象所关注的就是自身职责的完成:

       目的:高内聚,低耦合

       单一职责也就是单一变化原因。

       需要注意的一点就是:当实际情况中的职责确实发生了变化,应用该原则才是具有意义的。如果一个类组合了多个职责,

但这些职责在实际情况中根本不会发生变化,那就完全没有必要提前费尽心机去应用这个原则。

       SRP原则的好处是可以消除耦合,减小因需求变化引起代码僵化的难堪局面:

注意:

      ①:一个合理的类,应该仅有一个引起它变化的原因,即单一原则

      ②:在没有变化征兆的情况下应用SRP或其他原则是不明智的

      ③:在需求实际发生变化时就应该应用SRP等原则来重构代码

      ④:使用测试驱动开发会迫使我们在设计出现劣势趋势之前分离不合理代码

      ⑤:如果测试不能迫使职责分离,僵化性和脆弱性的腐朽味会变得很浓烈,那就应该用Facade或Proxy模式对代码进行重构

     eg1:错误的设计
public interface ISRP{
     /**
      * 设置身高
      * @param height
      */
    void setShengao(double height);
     /**
      * 获取身高
      */
    double getShengao();
    /**
     * 设置体重
     * @param weight
     */
    void setTizhong(double weight);
    /**
     * 获取体重
     * @return
     */
    double getTizhong();
    /**
     * 吃饭
     * @param bungry
     * @return
     */
    boolean chiFan(boolean bungry);
     /**
      * 上网
      * @param silly
      * @return
      */
    boolean shangWang(boolean silly);
}
上面的设计会导致职责不清晰,不知道该接口具体是干什么的,后期维护也会造成各式各样的问题,对于此等问题的解决方案就是

分解成两个职责不同的接口

/**
 * Bussiness Object 业务对象
 */
interface ISRPBO{
     /**
      * 设置身高
      * @param height
      */
    void setShengao(double height);
     /**
      * 获取身高
      */
    double getShengao();
    /**
     * 设置体重
     * @param weight
     */
   void setTizhong(double weight);
   /**
    * 获取体重
    * @return
    */
   double getTizhong();
}

/**
 * Bussiness Object 业务逻辑
 */
interface ISRPBL{
    /**
     * 设置体重
     * @param weight
     */
   void setTizhong(double weight);
   /**
    * 获取体重
    * @return
    */
   double getTizhong();    
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值