名称
Single Responsibility Principle,简称SRP。
定义
应该有且仅有一个原因引起类的变更。
适用范围
单一职责适用于接口
、类
,同时也适用于方法
。
争议点
对职责的定义,什么是类的职责
,以及怎么划分类的职责
。
优点
- 类的复杂性降低,实现什么职责都有清晰明确的定义;
- 可读性提高,复杂性降低,那当然可读性提高了;
- 可维护性提高,可读性提高,那当然可维护性提高了;
- 变更引起的风险降低,变更是必不可少的,如果
接口
的单一职责做得好,一个接口
修改只对相应的实现类
有影响,对其他的接口
无影响,这就对系统的扩展性、维护性都有非常大的帮助。
注意
单一职责原则提出了一个编写程序的标准
,用职责
或变化原因
来衡量接口或类设计的是否优良,但是职责
和变化原因
都是不可度量的
,因项目而异,因环境而异。
最佳实践
对于接口
,我们在设计的时候一定要做到
单一;但是对于实现类
就需要多方面考虑了,建议类
的设计尽量
做到只有一个原因引起变化。