• 单一职责原则:一个类应该只负责一项职责,若不复杂,可适当违法。
  • 接口隔离原则:客户端不应该依赖它不需要的接口,即一个类对另一个类的依赖应该建立在最小的接口上。

    将复杂的接口分开。

  • 依赖倒转(倒置)原则:面向接口编程,依赖接口,而不是直接依赖实现类。

    手机接口。张三每天起床要手机开机,那么张三这个类开机方法的入参应该是手机接口,而不是小米/华为手机。

  • 里氏替换原则:子类尽量不要修改父类方法。父类已经实现好的方法,子类可以修改;但当修改父类方法时,可能会破坏子类的实现。

    通过该原则,可以了解到继承会使得类之间耦合度较高,因此若修改,采用合成复用原则。

  • 开闭原则(OCP):一个软件应该对扩展开放(对提供方来说),对修改关闭(对使用方来说)。用抽象构建框架,用实现扩展细节。尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来实现变化。

    手机接口。张三每天起床要手机开机,那么张三这个类开机方法的入参应该是手机接口,而不是小米/华为手机。

  • 迪米特法则:一个类对自己依赖的类知道的越少越好,降低类之间的耦合。还有个更简单的定义:只与直接的朋友通信。

    一个复杂对象的打印操作,A 包含 B,B 包含 C,C 包含 D 等,A 不需要知道 D 的内容,只需要 A 知道 B,B 知道 C,C 知道 D 就可以。

  • 合成复用原则:尽量使用合成/聚合的方式,而不是使用继承

    B 使用 A 方法:(1)依赖法,传递 A 对象(2)聚合法,成员变量,set 赋值(3)组合方式,直接 new 一个 A 对象。