复用:设计模式
业务场景
内行的设计者知道:不是解决任何问题都要从头做起。他们更愿意复用以前使用过的解决方案。当找到一个好的解决方案,他们会一遍一遍地使用。因此,你会在许多面向对象系统中看到类和相互通信的对象的重复模式。
设计模式是软件设计中常见问题的典型解决方案。它们就像能根据需求进行调整的预制蓝图,可用于解决代码中反复出现的设计问题。
每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。这样,就能一次又一次地使用该方案而不必做重复劳动。
模式依目的可划分为三种:
- 创建型(Creational):与对象创建有关,增加已有代码的灵活性和可复用性;
- 结构型(Structural):处理类或对象的组合,并保持结构的灵活的高效;
- 行为型(Behavioral):描述类或对象怎样交互和怎样分配职责。
案例
各设计模式并不是孤立的,他们之间有着千丝万缕的联系:
——摘自 GOF 的 《设计模式:可复用面向对象软件的基础》。
限于篇幅,本文不再罗列各模式的具体实现。Go 版本实现可参考:《golang-design-pattern》
⓵ 创建型模式
- 简单工厂模式(Simple Factory)
- 工厂方法模式(Factory Method)
- 抽象工厂模式(Abstract Factory)
- 创建者模式(Builder)
- 原型模式(Prototype)
- 单例模式(Singleton)
⓶ 结构型模式
⓷ 行为型模式
- 中介者模式(Mediator)
- 观察者模式(Observer)
- 命令模式(Command)
- 迭代器模式(Iterator)
- 模板方法模式(Template Method)
- 策略模式(Strategy)
- 状态模式(State)
- 备忘录模式(Memento)
- 解释器模式(Interpreter)
- 职责链模式(Chain of Responsibility)
- 访问者模式(Visitor)
小结
正如前面提到的:“不是解决任何问题都要从头做起”。
设计模式是一种在软件设计中解决问题的方法论,它可以提高代码的可维护性、可重用性和可扩展性,同时也有助于提高软件系统的可靠性和稳定性。