设计模式应试要点
大约 10 分钟
设计模式应试要点(下午高频)
下午常在 UML 类图 / 场景描述 中考 GoF 模式识别与选型。23 种模式分类、每模式举例、三类快判 见 UML与设计模式 §1.3;本文保留 阅卷检查表 + 易混排除 + 意图速扫,便于考前扫读。
一、下午拿分动作(检查表)
| 检查项 | 做法 |
|---|---|
| 类图关系 | 继承、实现、关联、聚合、组合分清;菱形实心=组合(同生共死) |
| 多重度 | 从题干「一名/多名/至少一个」抄到图上 |
| 用例关系 | <<include>> 必走;<<extend>> 条件触发 |
| 模式名称 | 写 教材标准英文名 + 典型角色类名,忌口语 |
高频失分:聚合/组合画反;策略 / 状态 / 模板方法 混淆;把外观当成适配器。
1.1 2017-2019 模式题样本
| 模式 | 出题信号 | 先背角色 |
|---|---|---|
| Builder | 同样构建过程创建不同表示;复杂对象分步装配 | Builder、ConcreteBuilder、Director、Product |
| Bridge | 平台/格式等两个维度独立变化 | Abstraction、RefinedAbstraction、Implementor |
| State | 会员等级、订单状态等状态变化影响行为 | Context、State、ConcreteState |
| Strategy | 算法族可替换,运行时选择具体策略 | Context、Strategy、ConcreteStrategy |
| Observer | 一个对象变化,多个对象自动收到通知 | Subject、Observer、attach/detach/notify/update |
这些不是押题,而是近年解析样本中的典型载体。复习时先确保它们能 看场景秒判 + 写出角色名。
二、易混模式「一句话」
| 模式组 | 考场分辨 |
|---|---|
| 策略 vs 状态 | 策略:互换算法族;状态:对象内在状态变导致行为变 |
| 模板方法 vs 策略 | 模板:骨架在父类、子类填钩子;策略:组合不同算法对象 |
| 适配器 vs 装饰器 vs 代理 | 适配:接口不兼容转接;装饰:动态加职责;代理:控制访问 |
| 工厂三件套 | 简单工厂(非 GoF 名)/工厂方法(子类决定产品)/抽象工厂(产品族) |
| 外观 | 子系统统一入口,不新增业务规则 |
三、GoF 23 种意图速扫(下午选项常见)
完整 举例 + 角色 + 题干关键词 → UML与设计模式 §1.3。
| 创建型(5) | 一句话 |
|---|---|
| Singleton | 全局唯一实例 |
| Factory Method | 子类决定实例化哪一个产品类 |
| Abstract Factory | 创建 一族 相关对象 |
| Builder | 分步构造复杂对象 |
| Prototype | 用克隆代替 new |
| 结构型(7) | 一句话 |
|---|---|
| Adapter | 把不兼容接口转成客户端期望 |
| Bridge | 抽象与实现分离、两维扩展 |
| Composite | 树形部分-整体一致对待 |
| Decorator | 包装对象动态加职责 |
| Facade | 对外统一简单接口 |
| Flyweight | 共享细粒度对象 |
| Proxy | 为对象提供替身以控制访问 |
| 行为型(11) | 一句话 |
|---|---|
| Chain of Responsibility | 沿链传递请求直到被处理 |
| Command | 请求封装为对象,可撤销/队列 |
| Interpreter | 文法解释(上午概念多) |
| Iterator | 顺序访问聚合元素 |
| Mediator | 多对象经中介通信 |
| Memento | 捕获状态以便恢复 |
| Observer | 一对多,主题变则通知 |
| State | 状态对象改变行为 |
| Strategy | 封装可互换算法 |
| Template Method | 骨架固定、子类实现步骤 |
| Visitor | 不改类结构下定义新操作 |
四、与上午选择题的联动
上午常考 模式意图、类图关系、内聚耦合。可与 软件工程与面向对象 一起过一遍 定义对比,不必重复背长篇教材。