系统架构设计师(软考高级)设计模式备考指南
一、 核心战略:架构师考什么?
不要死记硬背代码! 架构师考试对设计模式的考察核心在于“权衡(Trade-off)”和“质量属性”。
高级架构师考法:
-
场景映射:面对业务痛点(如:支付渠道多变、老旧系统集成),首选哪个模式?
-
架构权衡:为什么要用桥接模式而不用继承?(答:继承会导致类爆炸,桥接实现了抽象与实现的解耦)。
-
质量属性:该模式如何提升了系统的可维护性、可扩展性或灵活性
基本分类:按目的分为创建型、结构型和行为型;按范围分为类设计模式和对象设计模式 。
二、 必考模式与高频考点清单
根据历年真题频率,将23种模式分为“T0(必考)”、“T1(常考)”和“T2(了解)”。
- 创建型模式主要用于创建对象,为设计类实例化新对象提供指南。
- 结构型模式主要用于处理类或对象的组合,对类如何设计以形成更大的结构提供指南。
- 行为型模式主要用于描述类或对象的交互以及职责的分配,对类之间交互以及分配责任的方式提供指南。
1. 行为型模式 —— 案例分析重灾区
主要关注对象之间的通信机制、职责分配以及算法的流转
请在脑海中重温我们之前的古装战争画面:“关公(关长)骑马指挥战斗,中方积极备战,(最后敌魔解体)。”
👉 口诀:【观状策命,中访备责,(迭模解)】
| 模式 | 频率 | 核心关键词 (看到这些词就选它) | 典型场景 (案例分析/论文素材) |
| Strategy (策略) | T0 | 算法互换、避免多重 if-else、运行时切换 | 商场促销(打折/满减)、多种税率计算、多种支付方式。 |
| Observer (观察者) | T0 | 一对多通知、联动、发布-订阅、解耦 | 股票价格更新、Excel图表联动、MVC中的Model与View。 |
| Chain of Resp. (职责链) | T1 | 层级处理、审批流程、传递请求 | 采购审批(经理<5万,总监<10万)、异常处理机制。 |
| Command (命令) | T1 | 撤销(Undo)/重做(Redo)、请求封装、日志记录、抽象出待执行的动作以参数化某对象。 | 文本编辑器的撤销操作、宏命令录制。 |
| State (状态) | T1 | 当一个对象的内在状态改变时,允许改变其行为,这个对象看起来像是改变了其类。 它的主要作用是消除庞大的 if-else 或 switch-case 条件分支语句,把各种状态下的复杂逻辑,分散到各个独立的状态类里面 | TCP连接状态、订单状态机(待支付->已支付->发货)。 |
| Mediator (中介者) | T2 | 网状变星型、多对多交互 | 当系统里有一堆对象互相调用,关系复杂得像一团乱麻时(多对多),引入一个“居委会大妈(中介者)”。以后谁也不许私下联系,所有人只和居委会大妈单线联系(一对多)。由大妈来统筹安排谁该干什么。 |
| Visitor (访问者) | T2 | 给一组固定的对象增加新功能,分离数据与算法 | 一家公司(稳定结构)里只有“程序员”和“销售”。今天派“体检医生(访问者A)”来:给程序员查颈椎,给销售查胃溃疡。明天派“绩效考核员(访问者B)”来:查程序员的代码量,查销售的成单量。员工自己不需要学医或学算账(不改动原有类),只需要乖乖接受审查员的访问即可。 |
| Memento(备忘录) | T2 | 保存/恢复内部状态、快照(Snapshot)、历史记录、存档、不破坏封装性。 | 游戏进度存档与读档、数据库的事务回滚机制、操作系统/软件的系统快照备份。 |
2. 结构型模式 —— 架构解耦利器
主要用于如何组合已有的类和对象以获得更大的结构,关注的是对象的内部结构(状态的划分)以及对象池的组织结构(如何存储和复用对象)
请在脑海中想象一个画面:“乔老爷把零件装配好,带着组员去外面享受生活。”
👉 口诀:【乔装配,代组外享】
| 模式 | 频率 | 核心关键词 (看到这些词就选它) | 典型场景 (案例分析/论文素材) |
| Bridge (桥接) | T0 | 多维度变化、抽象与实现分离、避免继承爆炸 | 1. 宣传产品管理(多种形式:宣传册/传单 + 多种出版方式:CD/在线发布); 2. 绘图软件(不同图形抽象 + 不同绘制程序实现)。 |
| Adapter (适配器) | T1 | 接口转换、兼容旧系统、复用类库 | 1.集成第三方支付SDK、老旧系统API改造。 2. 增加一个类,将不同商品供应商提供的“税率计算类”接口转换为系统期望的统一接口; 3. 工具之间数据格式/通信协议的灵活转换。 |
| Composite (组合) | T1 | 树形结构、整体-部分一致性 | 文件系统(文件夹+文件)、GUI容器(Panel+Button)。 门户网站的组织结构关系表达(总公司 ➔ 分公司 ➔ 办事处),无论是单独的分公司还是一个部门,操作均一致。 |
| Decorator (装饰) | T2 | 动态添加职责、比继承灵活 | 1. 为界面定制特效(为窗体动态添加滚动条、艺术字体); 2. 避免增加多种组合导致类的数量急剧增加(要求最多只增加3个类实现多种边框/滚动条组合)。 |
| Flyweight (享元模式) | T2 | 防止大量细粒度对象造成内存溢出” | 字处理软件中的字符对象共享;网络游戏中同类子弹/树木对象共享。 |
| Facade Pattern(门面模式) | T2 | 统一入口、定义高层接口、简化复杂子系统的调用 | 某子模块需要为访问不同的数据库系统(Oracle/SQL Server)的相同过程(连接、打开、查询)提供统一的对外访问接口/一致的界面。 |
| Proxy(代理) | T1 | 开销很大、延迟加载、控制访问、远程访问、占位符 | 文档编辑器中嵌入图形对象开销很大,为实现迅速打开,避免同时创建所有对象(虚拟代理,即本题场景) |
3. 创建型模式 —— 基础中的基础
上午题常考,案例分析中常作为辅助考点。
| 模式 | 频率 | 核心关键词 | 备考要点 |
| Factory Method | T0 | 延迟实例化、子类决定创建 | 区分简单工厂(非GoF)与工厂方法。 |
| Abstract Factory | T1 | 产品族、一系列相关对象 | 为创建一系列相关或相互依赖的对象提供接口 |
| Singleton | T1 | 全局唯一 | 配置管理器、数据库连接池。 |
| Builder(构造器模式) | T2 | 复杂对象分步构建 | 将复杂对象的构建与其表示相分离,使相同的构造过程可创建不同的对象 。 |
| Prototype | T2 | 克隆/拷贝 | 通过复制现有对象(原型)来创建新对象 。不需要了解要创建对象的确切类以及如何创建等细节的情况下创建自定义对象 |
三、 科目别备考策略与技巧
1. 综合知识 (上午题) —— “关键词秒杀法”
上午题通常是场景描述选择题,题目较长,但只要抓住关键词即可秒杀。
-
看到“撤销/恢复” -> 秒选 Command (命令模式) (2012真题)。
Command模式的类图 -
看到“不需要知道具体类,只需要知道产品系列” -> 秒选 Abstract Factory (抽象工厂)。
-
Factory Method模式的意图

其中:
- 类Product定义了Factory Method所创建的对象的接口。
- 类 ConcreteProduct 用于实现Product 接口。
- 类Creator声明了工厂方法,该方法返回一个Product类型的对象。Creator也可以定义一个工厂方法的缺省实现,它返回一个缺省的ConcreteProduct对象。
- 类ConcreteCreator重定义了工厂方法,以返回一个ConcreteProduct实例。
-
看到“将抽象部分与实现部分分离,使它们可以独立变化” -> 秒选 Bridge (桥接模式)

| 类名 | 角色 | 职责 |
| Shape 形状 | Abstraction (抽象化) | 定义高层接口,持有 Drawing 的引用 |
| Drawing 绘画 | Implementor (实现化) | 定义底层操作接口 |
| Rectangle / Circle 矩形/圆形 | RefinedAbstraction (修正抽象化) | 扩展 Shape,利用 Drawing 接口实现具体形状逻辑 |
| V1Drawing / V2Drawing V1 图纸/V2 图纸 | ConcreteImplementor (具体实现化) | 实现 Drawing 接口,对接具体的底层绘图库 |
| DP1 / DP2 | Legacy System (底层实现) | 实际执行绘制操作的第三方库或驱 |
2. 案例分析 (下午题)
案例分析通常给出一个不完整的 UML 类图和一段代码/描述。
-
UML 识别技巧:
-
菱形+实线 (组合关系) + 自身循环:通常是 Composite (组合模式) 或 Decorator (装饰模式)。
-
区别:组合模式侧重“部分-整体”,装饰模式侧重“增加功能”。
-
组合模式 (Composite Pattern) 是一种结构型设计模式,它允许你将对象组合成树形结构来表现“整体/部分”层次结构。组合能让客户以一致的方式处理个别对象以及对象组合。
该模式主要包含三个核心角色:
-
Component (抽象构件):
-
定义了组合中所有对象的共有接口。
-
在适当的情况下,实现所有类共有接口的默认行为。
-
声明用于访问和管理子组件的接口(如 Add, Remove, GetChild 等)。
-
-
Leaf (叶子构件):
-
在组合中表示叶子节点对象,叶子节点没有子节点。
-
实现了 Component 接口中的行为,但对于管理子节点的方法(如 Add/Delete),通常会抛出异常或不做任何操作。
-
-
Composite (容器构件):
-
定义有子部件的那些部件的行为。
-
存储子部件(通常通过一个列表或集合)。
-
实现在 Component 接口中与子部件有关的操作(如 Add/Delete)。
-
-
-
-
一个抽象类聚合了一个接口,且该接口有多个实现:极大概率是 Strategy (策略模式) 或 Bridge (桥接模式)。
-
区别:策略模式是行为互换,桥接模式是结构分离。
-
-
-
简答题话术模版(背诵!):
-
问:为什么要用这个模式?
-
答: 该模式遵循了“开闭原则”(对扩展开放,对修改关闭)。它将 [具体业务X] 与 [具体实现Y] 解耦,提高了系统的可扩展性和可维护性**。当增加新的 [Z类型] 时,无需修改现有代码,只需新增一个类即可。
-
-
不同模式的模版:
- 策略模式: 属于行为型模式。主要用于封装算法族。它定义了一系列算法,将每个算法封装起来,并使它们可以互换。该模式让算法的实现独立于使用它的客户端,客户端可以根据运行时需求(如不同的促销力度、不同的文件压缩方式)动态选择具体策略。它通常应用于系统设计初期,用于消除复杂的 if-else 或 switch 逻辑。
- 适配器模式:属于结构型模式。主要用于解决接口不兼容的问题。当系统需要复用现有的类(如第三方组件或老旧系统),但其接口与当前系统的目标接口不一致时,通过创建一个包装类(适配器)将原接口转换为目标接口,使原本因接口不匹配而无法协作的类能一起工作。它通常应用于软件开发后期或系统集成阶段。
- 工厂模式(特别是抽象工厂模式):为创建一系列相关或相互依赖的对象提供接口。通过为每种数据库建立具体的工厂类,方便数据库之间的切换。
访问者模式
- 核心机制:它的核心思想是将作用于某种数据结构中各元素的操作分离出来,封装成独立的“访问者”类。
- 主要优势:它使得系统可以在不改变原有数据结构(即各元素的类)的前提下,动态添加或定义作用于这些元素的新操作。这种方式极大地提高了系统的扩展性,为数据结构中的每个元素提供了多种不同的访问和处理方式。
- 适用场景:非常适用于数据结构相对稳定,但作用于该结构的操作经常变化的系统。例如:在开发工作流语言解释器时,对固定结构的活动节点需要扩展多种新的处理能力(如执行活动、日志记录等);或者如医院的处方单(固定的数据结构),划价员和药房人员对其有完全不同的处理方式。
中介模式
- 解除对象间的紧耦合:中介者模式通过引入一个特定的中介对象(如“转账管理器”)来封装一系列的对象交互。各个账户对象不需要显式地相互引用,它们只需要与中介者进行单线联系(将网状结构转化为星型的一对多结构),实现了松散耦合。
- 集中控制交互逻辑:复杂的转账协调工作(如协调A账户扣款、B账户加钱及异常处理)全部交由中介者统筹安排和路由,各参与对象只需关注自身内部状态的改变。
- 提升系统的扩展性:中介者对象的存在保证了对象结构上的稳定。当未来引入新类型的账户或修改转账规则时,只需修改或扩展中介者即可,不会因为新对象的引入带来大量的修改工作,极大提高了可维护性。
【七字真言版】(适合考场上默念,逻辑完整)
策略动态换算法,消除
if选最佳 -> 对应:动态选择、算法互换、消除 if-else。适配包装转接口,兼容老旧全接手 -> 对应:包装类、接口转换、兼容老旧系统。
抽象批量换产品,一族对象齐上阵 -> 对应:批量切换、产品族、一系列相关对象。
访问结构稳如山,不改原类加新篇 -> 对应:数据结构稳定、不改原类、加新操作。
四、 避坑指南(幻觉规避)
在备考和答题时,注意以下易混淆点,不要产生“知识幻觉”:
-
架构模式 vs 设计模式:
-
考试问“架构模式”时,千万别答“工厂模式”!
-
架构模式:MVC, MVP, MVVM, 微服务, SOA, 管道-过滤器, 黑板模式, Wrapper Facade (2013年考过,虽带Facade字样,但在该题中作为架构风格考察)。
-
设计模式:GoF 23种。
-
-
简单工厂 (Simple Factory) 不是 GoF 23种之一:
-
虽然常考,但严格分类时,GoF只有“工厂方法”和“抽象工厂”。如果问“以下属于GoF设计模式的是?”,小心简单工厂可能是干扰项(取决于题目严谨度,通常作为入门概念考察)。
-
-
状态模式 vs 策略模式:
-
类图几乎一样。
-
区分点:
-
策略模式:客户端主动选择具体的算法(Client 知道 StrategyA)。
-
状态模式:状态流转通常在内部自动发生,客户端不一定关心当前是哪个状态类。
-
-
五、 总结与行动计划
更多推荐


所有评论(0)