单一职责原则
2016-05-07 17:19
369 查看
一、概述
1.1 定义
单一职责原则(Single Responsibility Principle):不要存在多于一个导致类变更的原因。
核心思想:系统中的每一个对象都应该只有一个单独的职责,而所有对象所关注的就是自身职责的完成。
1.2 难点
单一职责,何为单一职责,职责的划分?关于单一职责,我的理解是一类相似的事物,它们拥有唯一一个共同父集。比如数据库的增删改查,我们可以将其理解成一种职责,即对数据的基本操作。
职责的划分,主要根据不同的角度划分,比如,
1、从类组成,划分为属性的操作,和行为操作两种。
2、从数据库操作的不同作用,划分为数据库的连接操作,和增删改查基本操作。
二、实例说明
在开发项目时,开发人员设计接口的时候会有些问题,比如我们设计用户接口类,有时为了方便原则,将其属性操作以及行为操作都封装在用户接口类中。上面这个例子,将业务对象和业务逻辑放在一起,使得接口有两种职责,用户类的年龄与身高,属于业务对象,与之相应的方法主要负责用户的属性;而吃东西是业务逻辑,主要负责用户的行为。因此业务对象和业务逻辑这两种原因都可以引起用户类的变化,发生多于一个导致类变更的原因的情况,违背了单一职责原则。
为了符合单一职责原则,我们将业务对象和业务逻辑这两种原因分散开来,即可解决。
在java中数据库操作中,根据不同职责划分类接口。
java.sql.Connection:Creates a
Statementobject for sending SQL statements to the database.
java.sql.Statement:Executes the given SQL statement, which returns a single
ResultSetobject.
单一职责原则,难点在于职责的划分,在实际中,我们尽量根据项目需求的不同角度去划分职责。
在某些时候不能遵守单一职责时,那就放心破坏吧,谨记教条是死的,生活是多变的。
比如:
Break Single Responsibility Principle
注意:一个合理的类,应该仅有一个引起它变化的原因,即单一职责。
在没有变化征兆的情况下应用SRP或其他原则是不明智的。
在需求实际发生变化时就应该应用SRP等原则来重构代码。
参考:
1、单一职责原则
相关文章推荐
- [android] 手机卫士接收打电话广播显示号码归属地
- prototype中美元符号$的有关用法
- 十进制转化成十六进制i
- HDU 4165 Pills (DP卡特兰数列)
- 几进制的转换
- html5新增加的表单元素-output
- HTML5网页打开摄像头,并拍照
- Bomb第三方支付
- 二叉数查找指定结点
- 一起学Netty(七)之 TCP粘包拆包基本解决方案
- 接口测试关注点、常用工具
- UVA, 820 Internet Bandwidth
- APP中缓存、加载与刷新机制设计
- html5新增加的表单元素-Keygen
- 2138的16进制简单的
- ContentProvider使用拾遗
- 十进制换成十六进制
- 一起学Netty(六)之 TCP粘包拆包场景
- 练习三 1003
- 一起学Netty(五)之 初识ByteBuf和ByteBuf的常用API