• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
掬一束月光
路漫漫其修远兮,吾将上下而求索.
博客园    首页    新随笔    联系   管理    订阅  订阅
单一职责原则 Single Responsibility Principle

 

 

应该有且仅有一个原因引起类的变更.

There should never be more than one reason for a class to change。

 

单一职责适用于接口,类,甚至是方法.

但对于类来说,往往又很难说.

因为受限于实际情况的多种因素影响,往往并不能保证类的单一职责.

 

接口的单一职责举例:

一个电话接口,定义电话的功能

dial拨号,chat通话,answer回应,hangeup挂断.

 

从特别的角度看,这个接口包含两种职责,一个是协议管理,即拨号与挂断,一个是数据传输,通话与回应.

可以修改为下图

但这种方式又增加了类的耦合度,phone类需要由ConnectionManager和DataTransfer组合而成.

 

而上图这种方式,一个类实现两种接口则是我们通常采用的方式.

此种方式明显更加完美,实现了接口职责的分割,又避免了组合类增加的耦合度.

 

 

 

 

方法的单一职责举例:

 这个方法根据type的不同,将可变参数changeOptions的值修改到userBO上.

看着好像挺方便,一个方法解决了很多问题,但此方法职责不清晰,不单一.需要大量的配套说明来解释.

而下图的的方法设计则简单明了,职责清晰,利于别人使用,并且也使维护的成本降低.

 

专注Java开发

作者:翟亚豪

邮箱:zyh186214@hotmail.com

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

posted on 2018-06-15 09:50  掬一束月光  阅读(165)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3