1. 开闭原则
对扩展开发,对修改关闭。通过接口或者抽象类为软件实体定义一个相对稳定的抽象层,而将相同的可变因素封装在相同的具体实现类,以实现开闭原则。
- 提高可测试性。
- 提高可维护性。
- 提高可复用性。
2. 里氏替换原则
继承必须确保超类所拥有的性质在子类中仍然成立。对开闭原则的补充,通俗点讲,子类可以扩展父类的功能,但不能改变父类原来的功能,也就是尽量不要重写父类的方法。
- 实现开闭原则的重要方式之一。
- 克服继承复用性变差的缺点。
- 降低出错的概率,降低新扩展导致系统出错的概率。
3. 依赖倒置原则
高层模块不应该依赖于低层模块,两者都应该依赖于抽象;抽象不应该依赖细节,细节应该依赖抽象。主要的核心思想是面向接口编程,而不是实现编程。
- 降低耦合。
- 提高稳定性。
- 增强可读性。
- 增强可维护性。
4. 单一职责原则
规定一个类应该有且仅有一个引起它变化的原因,否则类应该被拆分。这是很简单的一个原则,但是又是非常难保证的原则,因为往往都做不到一个类只负责一个功能。
- 增加内聚。
- 降低复杂度。
- 提高可维护性。
- 增强可读性。
- 减少修改的风险。
5. 接口隔离原则
尽量将大的、臃肿的接口拆分成更小、更具体的接口。约束接口,降低类对接口的依赖程度。
- 增加灵活性。
- 增加可维护性。
- 增加内聚。
6. 迪米特法则
如果两个软件实体无须直接通信,那么就不应当发生直接的相互调用,可以通过第三方转发该调用。
- 降低耦合。
- 提高复用性。
- 提高可扩展性。
7. 合成复用原则
在软件复用时,要尽量先使用组合或者聚合等关联关系来实现,其次才考虑使用继承关系来实现 。如果要使用继承关系,则必须严格遵循里氏代换原则。
- 维持封装性。
- 降低耦合度。
- 提高灵活性。