前言:本文目的是学习总结设计模式,提炼每个设计模式最核心的要点。一句话概括设计模式,必然会导致一些知识失真

创建型模式

  1. 简单工厂模式(Simple Factory)

     在 Go 中,即 NewXXX 方法,返回具体对象
    
  2. 工厂方法模式(Factory Method)

     使用接口取代具体对象,不同结构体实现不同的创建对象方法,返回一个抽象接口
    
  3. 抽象工厂模式(Abstract Factory)

     将关联的对象结合起来,在一个工厂中可生产这些关联对象
    
  4. 创建者模式(Builder)

     复杂的对象创建过程,采用分段构建的方式,依次调用,最终获得一个完整对象
    
  5. 原型模式(Prototype)

     提供一个 clone 方法,复制自身,返回新的对象
    
  6. 单例模式(Singleton)

     全局只提供唯一对象
    

结构型模式

  1. 外观模式(Facade)

     使用一个聚合类,其下包含多种对象,由这个聚合类对外提供统一操作接口
    
  2. 适配器模式(Adapter)

     强调我们需要构建一个中间适配器,才能使上层应用对接底层操作
    
  3. 代理模式(Proxy)

     类似于切面编程
    
  4. 组合模式(Composite)

     参照文件与文件夹。关键词:树形结构、统一操作接口、节点既是实体也作容器
    
  5. 享元模式(Flyweight)

     池策略
    
  6. 装饰模式(Decorator)

     在不修改原有函数的基础上,加点料。实现方式应该是多种多样的
    
  7. 桥模式(Bridge)

     强调使用一个“桥”抽象层,抽象层里定义两侧关系,两侧独立扩展
    

行为型模式

  1. 中介者模式(Mediator)

     使用中介对象来封装一系列的对象交互,对象之间不直接引用交互
    
  2. 观察者模式(Observer)

     当被观察对象改变时,调用观察者们的 callback
    
  3. 命令模式(Command)

     在行为请求者与行为实现者中,加入一层命令层,降低耦合,且使调用过程更加灵活可扩展
    
  4. 迭代器模式(Iterator)

     一个迭代器接口,包含 hasNext 和 getNext 方法
    
  5. 模板方法模式(Template Method)

     整体流程像一个模版被固定,子类负责具体实现
    
  6. 策略模式(Strategy)

     通过接口 + 实现类,在运行过程中动态替换实现类,避免大量 if else
    
  7. 状态模式(State)

     本质还是 接口 + 实现类,每个类表示一种状态,每个状态自己实现细节操作
    
  8. 备忘录模式(Memento)

     使用外部备忘录结构体,保存其他结构体内部状态
    
  9. 解释器模式(Interpreter)

     对一段文本或其它表示,专门提供一个解释器,用以自定义对文本的解析规则
    
  10. 职责链模式(Chain of Responsibility)

    一个大号的 switch case,每个职责链节点可以在运行中动态增删
    
  11. 访问者模式(Visitor)

    结构体需要预留 Accept ,接收 visitor 的访问,visitor 作为操作扩展的抽象,灵活添加。