面向对象的设计原则

学习设计模式之前,有必要了解面向对象**SOLID** 5 大设计原则:

名称 缩写 含义
Single Responsibility Principle
单一职责
S 对象应该具有单一的职责。这也是 Unix 的设计哲学
Open/Closed Principle
开/闭原则
O 对扩展开放,对修改关闭
Liskov Substitution Principle
里氏替换
L 对象应该可以在不破坏系统的情况下被子对象替换
Interface Segregation Principle
接口隔离
I 不应强迫任何客户端依赖其不使用的方法
Dependency Inversion Principle
依赖倒转
D 高级模块不应依赖于低级实现

除了 **SOLID** 5 大设计原则,一些书上可能还会提到下面的设计原则:

  • 合成/聚合复用原则(Composite/Aggregate Reuse Principle):尽量使用合成/聚合,而不要使用继承。这也是 Go 语言设计遵循的,基于此,Go 中没有继承。
  • 迪米特法则(LoD),又叫 最少知识原则:一个对象应当对其他对象有尽可能少的了解;一个软件实体应当与尽可能少的其他实体发生相互作用;也就是降低耦合。

设计模式分类

一般来说,设计模式分为三大类:

创建型模式:对对象的实例化过程进行抽象,这使得一个系统可以不用关心这些对象是如何创建,组合,呈现的,对于类创建模式来说通过使用继承改变实例化的类,对于对象创建模式来说通过使用代理来实例化所需要的对象。 结构型模式:通过对多个类和对象进行组合得到复杂结构的类,一般使用继承或者成员变量引用形式来实现。 行为型模式:行为模式不仅表达了对象和类,还表达了他们之间的交互,涉及到了对象和算法的分配。