Skip to content
难度基础(★)
建议时长45分钟

10.5.6 设计模式拼写及分类汇总

这一节的目标是把 23 种 GoF 设计模式收束成一张可复习的地图。考试第一层要求是:看到英文名能识别中文名和分类;看到场景能识别模式;看到模式能匹配意图。

23种模式分类总表

大类数量中文名英文名
创建型5工厂方法Factory Method
创建型5抽象工厂Abstract Factory
创建型5建造者/生成器Builder
创建型5原型Prototype
创建型5单例Singleton
结构型7适配器Adapter
结构型7桥接Bridge
结构型7组合Composite
结构型7装饰Decorator
结构型7外观Facade
结构型7享元Flyweight
结构型7代理Proxy
行为型11职责链Chain of Responsibility
行为型11命令Command
行为型11解释器Interpreter
行为型11迭代器Iterator
行为型11中介者Mediator
行为型11备忘录Memento
行为型11观察者Observer
行为型11状态State
行为型11策略Strategy
行为型11模板方法Template Method
行为型11访问者Visitor

类模式与对象模式

课程提到“类模式/对象模式”的分类,但软考目前更常考创建型、结构型、行为型。了解即可:

大类可能涉及类模式的模式常见对象模式
创建型Factory Method 既可类模式也可对象模式Abstract Factory、Builder、Prototype、Singleton
结构型Adapter 既可类模式也可对象模式Bridge、Composite、Decorator、Facade、Flyweight、Proxy
行为型Template Method、Interpreter 可作为类模式Chain、Command、Iterator、Mediator、Memento、Observer、State、Strategy、Visitor

考试如果在不确定时区分类模式/对象模式,课程提醒目前软考系列更常出现对象模式说法;但真正稳妥的做法还是先识别模式本身,再看选项。

四类常见考法

考法说明解题入口
场景识别给业务描述,问采用哪种模式抓“变化点”和“意图关键词”
图式识别给类图,问是哪种模式找特殊类名、方法名、调用关系
分类判断问某模式属于哪一类记 5-7-11 表格
意图/适用场景给多个意图,问哪个属于某模式用一句话意图排除

高频关键词索引

关键词模式
唯一实例、全局访问点Singleton
一系列相关产品、产品族Abstract Factory
子类决定实例化、延迟实例化Factory Method
复杂对象、构建与表示分离Builder
克隆、复制已有对象Prototype
接口不兼容、转换接口Adapter
两个独立变化维度、抽象与实现分离Bridge
树形结构、整体-部分、一致使用Composite
动态添加职责Decorator
统一高层接口、封装子系统Facade
大量细粒度对象共享Flyweight
控制访问、远程/虚拟/保护代理Proxy
层层审批、沿链传递Chain of Responsibility
请求封装成对象、撤销、队列、日志Command
文法、终结符、非终结符Interpreter
顺序访问聚合对象、nextIterator
多对象交互由中心协调Mediator
保存状态、恢复、备份Memento
一对多联动、通知、订阅Observer
内部状态改变导致行为改变State
算法族、算法互换Strategy
算法骨架、子类填步骤Template Method
visit、accept、数据与操作分离Visitor

相近模式辨析清单

易混组判断方法
工厂方法 vs 抽象工厂工厂方法生产一个产品;抽象工厂生产一族相关产品
建造者 vs 抽象工厂建造者强调复杂对象构建步骤;抽象工厂强调产品族
适配器 vs 外观适配器转换不兼容接口;外观简化复杂子系统入口
装饰 vs 代理装饰增加职责;代理控制访问
桥接 vs 访问者桥接组合两个变化维度;访问者选择操作去访问对象结构
状态 vs 策略状态封装状态;策略封装算法
观察者 vs 中介者观察者是一对多通知;中介者协调多对象交互
命令 vs 职责链命令把请求对象化;职责链让请求沿处理链传递

复习顺序

  1. 背三大类数量:创建型 5、结构型 7、行为型 11。
  2. 背英文名和中文名对应关系。
  3. 给每个模式写一句意图。
  4. 练相近模式辨析。
  5. 对照真题类图,标出特殊类名和方法名。

例题

单选
Observer 模式属于:
单选
类图中出现 `visit()` 和 `accept(visitor)`,并强调在不改变元素类的前提下增加操作,最可能是:

自查要点

  1. 创建型、结构型、行为型分别有哪些模式?
  2. 哪些模式考试里常通过英文类名直接识别?
  3. 为什么“类名与模式无关”时要回到应用场景?
  4. 状态、策略、访问者、桥接这四个相近模式如何区分?