设计模式解读(单一职责原则)
Single-responsibility principle
这个原则有一句很经典的英文解释:
There should never be more than one reason for a class to change.
翻译成中文是: 永远不要有超过一个原因引起类的变化。
很多书上这么解释: 一个类,应该只有一个引起它变化的原因。
估计大部分人看了还是没明白到底该怎么写代码。
维基百科找的解释:
The single-responsibility principle (SRP) is a computer-programming principle that states that every module or class[1] should have responsibility over a single part of the functionality provided by the software, and that responsibility should be entirely encapsulated by the class, module or function. All its services should be narrowly aligned with that responsibility. Robert C. Martin expresses the principle as, "A class should have only one reason to change,"[1] although, because of confusion around the word "reason" he more recently stated "This principle is about people."[2]
翻译成中文:单一职责原则是一个计算机编程原则,它强调每一个模块或者类应该拥有软件功能的单一部分的职责,这部分职责完全由这个模块或类封装实现。它的所有服务都应该严格的与这个职责对齐。Robert C. Martin这么表达这个原则:一个类应该只有一个原因发生变化。不过,由于对“原因”一词的混淆,他最近又说“这一原则是关于人的。
两者对比一下,我个人觉得维基百科的解释更能指导大家的编码。但是对于刚进行编程的人来说理解起来还是有点困难。
我自己的理解如下:
所谓单一职责原则其实有点“专人专责”的意思。比如安排一个班的学生打扫学校的卫生,我们可以把学校划分为n个区域(假定班级有n个学生)。每个学生都被安排打扫指定的一个区域。这样分工的好处在于如果任何一个区域没有被打扫干净,我们都可以非常容易的找到对应的责任人,不会有任何扯皮的事情。软件开发也是如此,把软件划分为不同的模块,每个模块负责不同的工作。如果某项工作出现问题,我们能很容易的找到对应的模块,然后排查这个模块即可。如果没有遵循单一职责原则,要查处问题的根源需要排查多个模块的源码,排查问题的难度不亚于做刑事侦查