SRP设计原则面向对象类设计的第一个原则,最优先考虑的因素

  一个类应该有且仅有一个职责。所谓一个类的职责是指引起该类变化的原因,如果一个类具有一个以上的职责,那么就会有多个不同的原因 引起该类变化,其实就是耦合了多个互不相关的职责,就会降低这个类的内聚性。

也就是说每一个类只做一件事,那么什么叫做“一件事”?

  比如说一个学生信息管理类,这个类有“添加学生信息”、 “查询学生信息”、 “修改学生信息”、 “删除学生 信息”,那么这是4件事情,还是一件事情呢?看起来好像是4个事情,但稍有经验的朋友应该都知道,这4个事情绝大部分情况下都是一个类来实现的, 而不是分成4个类!

比如说,我是一个程序猿,我的职责应该是“写程序”,但写程序有很多事情,例如:编码,单元测试、 系统测试,bug修复,开会,写文档……

再比如说,我的BOSS是一个管理者,他的职责是“管理程序猿”,他也有很多工作,例如:制定计划, 团队建设、开会、协调资源、写文档……

又比如说,我是一个快递员,也有很多工作:分包、快递、收款、开会……

  这些职责其实都不是我们自己定义的,而是公司或者部门或者组织给我们安排工作的时候定义的,也就是说:“职责”是站在他人的角度来定义的,而不是自己定义的。

经过对我们自己的职责的分析,我们可以得出两个关于职责的重要结论:

1)职责是站在他人的角度来定义的

2)职责不是一件事,而是很多事情,但这些事情都是和职责紧密相关的

对应到面向对象设计领域,我们可以说一个类的职责应该如下定义:

1)类的职责是站在其它类的角度来定义的

2)类的职责包含多个相关功能

  因此,SRP可以翻译成“一个类只负责一组相关的事情”,对应到代码中就是:一个类有多个方法,这些方法是相关。

注:SRP不能应用于聚合类,所以还有一个原则就是:优先考虑对象组合,而不是类继承

面向对象设计之SRP(单一职责)原则的更多相关文章

  1. 六大设计原则(一)SRP单一职责原则

    单一职责原则SRP(Single reponsibility principle) BO(Business Object):业务对象 Biz(Business Logic):业务逻辑 SRP最简单的例 ...

  2. 设计模式原则(1)--Single Responsibility Principle(SRP)--单一职责原则

    1.定义: 不要存在多于一个导致类变更的原因.通俗的说,即一个类只负责一项职责.  2.使用场景: 如果类A有两个职责:d1,d2.当职责d1需要修改时,可能会导致原本运行正常的职责d2功能产生问题. ...

  3. IOS设计模式的六大设计原则之单一职责原则(SRP,Single Responsibility Principle)

    定义 就一个类而言,应该仅有一个引起它变化的原因. 定义解读 这是六大原则中最简单的一种,通俗点说,就是不存在多个原因使得一个类发生变化,也就是一个类只负责一种职责的工作. 优点 类的复杂度降低,一个 ...

  4. 单一职责原则(Single Responsibility Principle,SRP)

    定义:不要存在多于一个导致类变更的原因.通俗的说,即一个类只负责一项职责. 问题由来:类T负责两个不同的职责:职责P1,职责P2.当由于职责P1需求发生改变而需要修改类T时,有可能会导致原本运行正常的 ...

  5. 单一职责原则(Single Responsibility Principle)

    单一职责原则(SRP:The Single Responsibility Principle) 一个类应该有且只有一个变化的原因. There should never be more than on ...

  6. 设计模式六大原则(一):单一职责原则(Single Responsibility Principle)

    单一职责(SRP)定义: 不要存在多于一个导致类变更的原因,通俗的说,即一个类只负责一项职责. 问题由来: 类T负责两个不同的职责:职责P1,职责P2.当由于职责P1需求发生改变而需要修改类T时,有可 ...

  7. SRC单一职责原则

    一.定义 一个类应该只有一个发生变化的原因. 二.为什么要使用SRC 因为每一个职责都是变化的一个轴线.当需求变化时,这种变化就会反映为类的职责的变化.如果一个类承担了多于一个的职责,那么引起它变化的 ...

  8. 【设计模式六大原则1】单一职责原则(Single Responsibility Principle)

        http://blog.csdn.net/zhengzhb/article/category/926691/1 图片素材来源,java学习手册 ps.内容为自己整理   定义:不要存在多于一个 ...

  9. ZT 设计模式六大原则(1):单一职责原则

    zt 设计模式六大原则(1):单一职责原则 分类: 设计模式 2012-02-21 09:52 25059人阅读 评论(65) 收藏 举报 设计模式stringclass编程 (THERE SHOUL ...

随机推荐

  1. Scrum项目7.0

    队友: 郭志豪:http://www.cnblogs.com/gzh13692021053/ 杨子健:http://www.cnblogs.com/yzj666/ 刘森松:http://www.cnb ...

  2. js闭包

    先从闭包特点解释,应该更好理解. 闭包的两个特点: 1.作为一个函数变量的一个引用 - 当函数返回时,其处于激活状态.2.一个闭包就是当一个函数返回时,一个没有释放资源的栈区. 其实上面两点可以合成一 ...

  3. MariaDB 主从复制的配置

    一.安装MariaDB 安装过程省略. 二.主从配置 环境     Master/Slave     系统 IP 数据库版本 Master     CentOS6.7         10.10.3. ...

  4. linux shell输出带颜色文本

    echo -e "\033[33;31m Color Text" - red echo -e "\033[33;32m Color Text" - green ...

  5. pyqt 过滤事件

    # 过滤鼠标滚轮事件 class stepItem(QWidget): def __init__(self, parent=None): QWidget.__init__(self, parent) ...

  6. [BZOJ3754]Tree之最小方差树

    3754: Tree之最小方差树 Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 402  Solved: 152[Submit][Status][Di ...

  7. View的滑动

    View的滑动 通过三种方式可以实现View的滑动: 1.通过View本身提供的scrollTo/scrollBy方法来实现滑动 2.通过动画给View施加平移效果来实现滑动 3.通过改变View的L ...

  8. tomcat在linux下自启动

    Linux下设置tomcat开机自启动  一.以root用户登录系统: 二.进入init.d文件夹 cd /etc/init.d/ 三.创建并打开tomcat文件 vi tomcat 四.tomcat ...

  9. *HDU 1398 母函数

    Square Coins Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Tota ...

  10. IOS第一天-新浪微博 - 框架的搭建

    *************HWAppDelegate.m - (BOOL)application:(UIApplication *)application didFinishLaunchingWith ...