单一职责原则
又称单一功能原则,面向对象五个基本原则(SOLID)之一。它规定一个类应该只有一个发生变化的原因。
从字面意义来理解.单一职责 就是一个类应该有且只有一个功能
连起来理解应该就是。当某个职责发生改变 应该也只能影响某一个类 ,我们只需要修改其中一个类的代码就可以了。
当有多个职责逻辑发生改变。都会影响到某个类时。应该重构代码。
看起来蛮简单的,但实践起来 我们如何知道一个一个类的多个行为构建的是单个职责还是多个职责呢?
搜了一下 看看大家是怎么解决的。有一个解决方案是 参考
《Object Design: Roles, Responsibilies, and Collaborations》
该书提出了如下Role Stereotypes来区分职责:
-
Information holder – 该对象设计为存储对象,并提供对象信息给其它对象。
-
Structurer – 该对象设计为维护对象和信息之间的关系。
-
Service provider – 该对象设计为处理工作并提供服务给其它对象
-
Controller – 该对象设计为控制决策一系列负责的任务处理
-
Coordinator – 该对象不做任何决策处理工作,只是delegate工作到其它对象上
-
Interfacer – 该对象设计为在系统的各个部分转化信息(或请求)
很明显 你需要理解你的类职能 是上述的那种。把不相干的剔除就可以了。但作为初学者而言,我表示虽然看起来很厉害的样子,但是实在是看不懂。
那么还有一个方法。职责的认定是比较主观的。一般 只要能自圆其说讲的通。 写出来的类和方法逻辑不复杂,就可以了。
反之 如果写出来的类 和方法逻辑太复杂 那么建议再抽象 拆分。