开闭原则
- 定义 : 一个软件实体如类, 模块和函数应该对扩展开放, 对修改关闭
- 用抽象构建框架, 用实现扩展细节
- 优点 : 提高软件系统的可复用性及可维护性
依赖倒置原则
- 定义 : 高层模块不应该依赖低层模块, 两者都应该依赖其抽象
- 抽象不应该依赖细节; 细节应该依赖抽象
- 面向接口编程, 而不是面向实现编程
- 优点 : 可以减少类间的耦合性, 提高系统稳定性, 提高代码可读性和维护性, 降低修改程序所造成的风险
单一职责原则
- 定义 : 不要存在多于一个导致类变更的原因
- 一个类/接口/方法只负责一项职责
- 优点 : 降低类的复杂度, 提高类的可读性, 提高系统的可维护性, 降低变更引起的风险
接口隔离原则
- 定义 : 用多个专门的接口, 而不使用单一的总接口, 客户端不应该依赖它不需要的接口
- 一个类对一个类的依赖应该建立在最小的接口上
- 建立单一接口, 不要建立庞大臃肿的接口
- 尽量细化接口, 接口中的方法尽量少
- 优点 : 符合高内聚低耦合的设计思想, 从而使类具有很好的可读性, 可扩展性和可维护性
- 要适度
迪米特原则(最少知道原则)
- 定义 : 一个对象应该对其他对象保持最少的了解
- 尽量降低类与类之间的耦合
- 优点 : 降低类之间的耦合
里氏替换原则(LSP)
- 一个软件实体如果使用的是一个父类的话, 那么一定适用于其子类, 而且察觉不出父类和子类对象的区别。也就是说在软件里面, 把父类替换成它的子类, 程序行为没有变化
合成/复用原则(组合/复用原则)
- 就是在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分;新的对象通过向这些对象的委派达到复用已有功能的目的。
- 简短表述就是:要尽量使用组合,尽量不要使用继承。