先分三类,再看题干动作
创建型模式解决“对象怎么创建”的问题,比如单例、工厂方法。结构型模式解决“类或对象怎么组合”的问题,比如适配器、装饰器、代理、组合。行为型模式解决“对象之间怎么协作、算法怎么变化”的问题,比如策略、模板方法、观察者。
软件设计师题目常常不会直接问定义,而是给一个场景:接口不兼容、需要统一处理树形对象、算法要运行时切换、状态变化要通知多个对象。你要做的是把场景翻译成模式意图。
| 类别 | 关注点 | 常见模式 |
|---|---|---|
| 创建型 | 对象如何创建、谁来创建 | 单例、工厂方法 |
| 结构型 | 对象如何组合、如何包一层 | 适配器、装饰器、代理、组合 |
| 行为型 | 职责如何分配、行为如何变化 | 策略、模板方法、观察者 |
| 易错点 | 结构像不等于意图相同 | 适配器、装饰器、代理最容易混 |
看到关键词,先翻译成意图
“只创建一个实例”对应单例;“由子类决定创建哪种产品”对应工厂方法;“接口不匹配但想复用旧组件”对应适配器;“动态增加附加功能”对应装饰器;“控制访问或提供替身”对应代理。
行为型模式也一样:折扣、支付、排序规则这些可替换算法,常指向策略模式;流程骨架固定、部分步骤由子类实现,常指向模板方法;一个对象变化后通知多个依赖对象,常指向观察者。
不要只看“包一层”
适配器、装饰器、代理看起来都像中间加一层,但考试看的是加这一层为了什么。为了接口转换,是适配器;为了功能叠加,是装饰器;为了访问控制、远程访问或延迟加载,是代理。
所以做设计模式题时,先别急着回忆类图长什么样。先问一句:这个模式到底替系统解决了哪类变化。
相关题目解析
下面这些题目和本专题的判断方法关联较强,适合读完概念后回到具体题干里校验理解。
- 工厂方法模式解决什么问题?工厂方法模式 / 软件设计师设计模式
- 单例模式适用于什么场景?单例模式 / 面向对象
- 适配器模式主要解决什么设计问题?2026年真题考点 / 适配器模式
- 装饰器模式和代理模式怎么区分?设计模式 / 装饰器模式
- 组合模式适合解决什么问题?设计模式 / 组合模式
- 策略模式适合解决什么设计问题?设计模式 / 策略模式
- 模板方法模式适合解决什么问题?设计模式 / 模板方法模式
- 观察者模式适合解决什么问题?观察者模式 / 观察者模式适用场景