总原则:开闭原则
对扩展开放,对修改关闭
单一原则
不存在多于一个导致类变更的原因,也就是说每个类应该实现单一的职责,如果不能,就应该把类进一步拆分
里氏替换原则
任何基类出现的地方,子类一定可以出现。 LSP 是继承复用的基石,只有当衍生类可以替换掉基类,软件单位功能不受到影响,基类才能真正被复用,而衍生类才能在基类的基础上增加新的行为。
依赖倒转原则
这个是开闭原则的基础,具体内容:面向接口编程,依赖于抽象而不依赖于具体。写代码时用到具体类时,不与具体类交互,而与具体类的上层接口交互。
接口隔离原则
每个接口中不存在子类用不到却必须实现的方法,如果不然,就要将接口拆分。使用多个接口的隔离,比使用单个接口要好。
迪米特法则
一个类对自己依赖的类知道的越少越好,也就是说无论被依赖的类多么复杂,都应该讲逻辑封装在方法内部,通过 public 方法提供给外部,这样当被依赖的类发生变化的时候,才能最小的影响该类。
合成复用原则
原则尽量首先使用合成/聚合的方法,而不是继承
23 三种设计模式分类:
对象创建模式:
- 原型模式
- 工厂模式
- 抽象工厂模式
- 生成器模式
- 单例模式