【!!!重要!!!践行!!!】单一职责原则 一个方法、函数只做一件事

单一职责原则 - 搜狗百科 https://baike.sogou.com/v51360965.htm

单一职责原则(SRP:Singleresponsibilityprinciple)又称单一功能原则,面向对象五个基本原则(SOLID)之一。它规定一个类应该只有一个发生变化的原因。该原则由罗伯特·C·马丁(RobertC.Martin)于《敏捷软件开发:原则、模式和实践》一书中给出的。马丁表示此原则是基于汤姆·狄马克(TomDeMarco)和MeilirPage-Jones的著作中的内聚性原则发展出的。所谓职责是指类变化的原因。如果一个类有多于一个的动机被改变,那么这个类就具有多于一个的职责。而单一职责原则就是指一个类或者模块应该有且只有一个改变的原因。

中文名 单一职责原则
缩 写 SRP
提出者 罗伯特·C·马丁(Robert C. Martin)
外文名 Single responsibility principle
又 称 单一功能原则
出 处 敏捷软件开发:原则、模式和实践
 
 

1原理

如果一个类承担的职责过多,就等于把这些职责耦合在一起了。一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当发生变化时,设计会遭受到意想不到的破坏。而如果想要避免这种现象的发生,就要尽可能的遵守单一职责原则。此原则的核心就是 解耦和增强内聚性

问题由来

之所以会出现单一职责原则就是因为在软件设计时会出现以下类似场景:

T负责两个不同的职责:职责P1,职责P2。当由于职责P1需求发生改变而需要修改类T时,有可能会导致原本运行正常的职责P2功能发生故障。也就是说职责P1和P2被耦合在了一起。

产生原因

没有任何的程序设计人员不清楚应该写出高内聚低耦合的程序,但是很多耦合常常发生在不经意之间,其原因就是:

职责扩散:因为某种原因,某一职责被分化为颗粒度更细的多个职责了。

解决办法

遵守单一职责原则,将不同的职责封装到不同的类或模块中。

 

 https://github.com/alibaba/p3c/blob/master/阿里巴巴Java开发手册(详尽版).pdf

单一原则最易理解却是最难实现的一条规则,随着系统演进,很多时候,忘记了类设计 的初衷。

原文地址:https://www.cnblogs.com/rsapaper/p/9714124.html