架构设计原则主要作用是让我们明确如何在类中安排我们的程序和数据结构,以及这些类之间的关系应该如何建立。SOLID原则的目标是创建中层软件架构,满足:容忍改变、易于理解、基础组件可以用在多个软件系统中。
单一职责
单一职责原理(Single Responsibility Principle,SRP),单一功能职责。这里的职责是指类变化的原因,单一职责原则规定一个类应该有且仅有一个引起它变化的原因,否则类应该被拆分。即,一个模块有且只能对一个角色负责。
单一职责原则的核心是控制类的粒度大小,将对象解偶,提高其内聚性。
- 降低类的复杂度。一个类只负责一个职责比负责多项职责要简单得多
- 提高可读性。复杂度降低,可读性自然就提高了
- 提高系统的维护性。可读性提高,并且修改一项职责对其他职责影响降低类,就更容易维护
- 变更引起的风险降低。单一职责如果遇到变更则影响范围也会更小
比如,Phone接口,我们仅对其支持打电话,听音乐,发信息,更换手机壳。更换手机壳功能,这个不应该属于Phone的职责,其更多依赖外部操作去更换。
class Phone {
makeCall(){ }
listenMusic(){ }
sendMessage(msg:Message) { }
changeCover() { }
}
为了避免出现因修改一个功能导致其他的功能发生故障,解决方法就是遵循单一职责模式。单一职责原则不只是面向对象编程思想所特有的,只要是模块化的程序设计,都适用单一职责原则。
什么情况会破坏SRP
- 类的依赖太多
- 方法有提阿多参数
- 测试类变得复杂
- 在一个地方改动影响另外地方