1. 单一职责原则
一个类只负责一个职责
2. 接口隔离原则
客户端不应该引入不需要的接口,一个类对另一个类的依赖应该建立在最小的接口上
3. 依赖倒转原则
3.1 高层模块不能依赖低层模块,二者都应该依赖其抽象;
3.2 抽象不依赖细节,细节依赖抽象;
3.3 中心思想:面向接口;
3.4 以抽象为基础搭建的架构比以细节为基础的架构稳定,抽象指的是接口或抽象类,细节就是具体的实现;
3.5 使用接口或抽象的目的是指定好规范,不涉及任何具体操作,把展现细节的任务交给实现类去完成
4. 里氏替换原则
继承的弊端:增加了程序间的耦合性,程序可移植性降低,(父类修改后,子类可能都需要修改)
里氏替换就是引用基类的地方可以透明地使用其子类的对象,在子类中尽量不要重写父类的方法,在适当的情况下通过聚合、组合、依赖来解决问题
5. 开闭原则
模块和函数应该对扩展开放(对提供方),对修改关闭(对使用方)。用抽象构建框架,用实现扩展细节;
当软件需要变化时尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有代码来实现变化
6. 迪米特法则
6.1 一个对象应该对其他对象保持最小了解
6.2 类与类之间关系越密切,耦合度越大
6.3 迪米特原则就是最少知道原则
6.4 只与直接的朋友通信(局部变量中的就不是直接的朋友,陌生的类最好不要以局部变量的形式出现在类的内部)
7. 合成复用原则
尽量使用合成/聚合的方式,而不是使用继承