一句话总结设计模式
前言:本文目的是学习总结设计模式,提炼每个设计模式最核心的要点。一句话概括设计模式,必然会导致一些知识失真
创建型模式
-
简单工厂模式(Simple Factory)
在 Go 中,即 NewXXX 方法,返回具体对象
-
工厂方法模式(Factory Method)
使用接口取代具体对象,不同结构体实现不同的创建对象方法,返回一个抽象接口
-
抽象工厂模式(Abstract Factory)
将关联的对象结合起来,在一个工厂中可生产这些关联对象
-
创建者模式(Builder)
复杂的对象创建过程,采用分段构建的方式,依次调用,最终获得一个完整对象
-
原型模式(Prototype)
提供一个 clone 方法,复制自身,返回新的对象
-
单例模式(Singleton)
全局只提供唯一对象
结构型模式
-
外观模式(Facade)
使用一个聚合类,其下包含多种对象,由这个聚合类对外提供统一操作接口
-
适配器模式(Adapter)
强调我们需要构建一个中间适配器,才能使上层应用对接底层操作
-
代理模式(Proxy)
类似于切面编程
-
组合模式(Composite)
参照文件与文件夹。关键词:树形结构、统一操作接口、节点既是实体也作容器
-
享元模式(Flyweight)
池策略
-
装饰模式(Decorator)
在不修改原有函数的基础上,加点料。实现方式应该是多种多样的
-
桥模式(Bridge)
强调使用一个“桥”抽象层,抽象层里定义两侧关系,两侧独立扩展
行为型模式
-
中介者模式(Mediator)
使用中介对象来封装一系列的对象交互,对象之间不直接引用交互
-
观察者模式(Observer)
当被观察对象改变时,调用观察者们的 callback
-
命令模式(Command)
在行为请求者与行为实现者中,加入一层命令层,降低耦合,且使调用过程更加灵活可扩展
-
迭代器模式(Iterator)
一个迭代器接口,包含 hasNext 和 getNext 方法
-
模板方法模式(Template Method)
整体流程像一个模版被固定,子类负责具体实现
-
策略模式(Strategy)
通过接口 + 实现类,在运行过程中动态替换实现类,避免大量 if else
-
状态模式(State)
本质还是 接口 + 实现类,每个类表示一种状态,每个状态自己实现细节操作
-
备忘录模式(Memento)
使用外部备忘录结构体,保存其他结构体内部状态
-
解释器模式(Interpreter)
对一段文本或其它表示,专门提供一个解释器,用以自定义对文本的解析规则
-
职责链模式(Chain of Responsibility)
一个大号的 switch case,每个职责链节点可以在运行中动态增删
-
访问者模式(Visitor)
结构体需要预留 Accept ,接收 visitor 的访问,visitor 作为操作扩展的抽象,灵活添加。