系统架构设计师(软考高级)设计模式备考指南

一、 核心战略:架构师考什么?

不要死记硬背代码! 架构师考试对设计模式的考察核心在于"权衡(Trade-off)""质量属性(Quality Attributes)"。

  • 初级/中级考法:这是什么模式?(填空/选择)

  • 高级架构师考法

    1. 场景映射:面对业务痛点(如:支付渠道多变、老旧系统集成),首选哪个模式?

    2. 架构权衡:为什么要用桥接模式而不用继承?(答:继承会导致类爆炸,桥接实现了抽象与实现的解耦)。

    3. 质量属性 :该模式如何提升了系统的可维护性可扩展性灵活性


二、 必考模式与高频考点清单

根据历年真题频率,将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 | 状态驱动行为、状态流转 | TCP连接状态、订单状态机(待支付->已支付->发货)。 |
| Mediator (中介者) | T2 | 网状变星型、多对多交互 | 复杂的GUI对话框交互、航空管制。 |
| Visitor (访问者) | T2 | 数据结构稳定但操作多变 | 编译器设计(语法树分析)、报表生成。 |

2. 结构型模式 ------ 架构解耦利器

这一类模式主要考察如何解决接口不兼容、类爆炸等架构问题。

|--------------------|--------|--------------------------|----------------------------------------------------|
| 模式 | 频率 | 核心关键词 (看到这些词就选它) | 典型场景 (案例分析/论文素材) |
| Bridge (桥接) | T0 | 多维度变化、抽象与实现分离、避免继承爆炸 | 跨平台图像浏览(系统:Win/Linux + 格式:JPG/PNG)、数据库驱动。 |
| Adapter (适配器) | T1 | 接口转换、兼容旧系统、复用类库 | 集成第三方支付SDK、老旧系统API改造。 |
| Facade (外观) | T1 | 统一入口、简化调用、分层 | API网关、微服务门面、复杂子系统的对外接口。 |
| Composite (组合) | T1 | 树形结构、整体-部分一致性 | 文件系统(文件夹+文件)、GUI容器(Panel+Button)。 |
| Decorator (装饰) | T2 | 动态添加职责、比继承灵活 | Java I/O流 (new BufferedReader(new FileReader...))。 |

3. 创建型模式 ------ 基础中的基础

上午题常考,案例分析中常作为辅助考点。

|----------------------|--------|-----------------|----------------------|
| 模式 | 频率 | 核心关键词 | 备考要点 |
| Factory Method | T0 | 延迟实例化、子类决定创建 | 区分简单工厂(非GoF)与工厂方法。 |
| Abstract Factory | T1 | 产品族、一系列相关对象 | 换皮肤(按钮+窗口+滚动条需风格一致)。 |
| Singleton | T1 | 全局唯一 | 配置管理器、数据库连接池。 |
| Builder | T2 | 复杂对象分步构建 | 生成复杂的HTML报告、组装电脑。 |


三、 科目别备考策略与技巧

1. 综合知识 (上午题) ------ "关键词秒杀法"

上午题通常是场景描述选择题,题目较长,但只要抓住关键词即可秒杀。

  • 看到"撤销/恢复" -> 秒选 Command (命令模式) (2012真题)。

  • 看到"不需要知道具体类,只需要知道产品系列" -> 秒选 Abstract Factory (抽象工厂)

  • 看到"将抽象部分与实现部分分离,使它们可以独立变化" -> 秒选 Bridge (桥接模式) (2016真题)。

  • 看到"防止大量细粒度对象造成内存溢出" -> 秒选 Flyweight (享元模式)

2. 案例分析 (下午题 I) ------ "填空与找茬"

案例分析通常给出一个不完整的 UML 类图和一段代码/描述。

  • UML 识别技巧

    • 菱形+实线 (组合关系) + 自身循环 :通常是 Composite (组合模式)Decorator (装饰模式)

      • 区别:组合模式侧重"部分-整体",装饰模式侧重"增加功能"。
    • 一个抽象类聚合了一个接口,且该接口有多个实现 :极大概率是 Strategy (策略模式)Bridge (桥接模式)

      • 区别:策略模式是行为互换,桥接模式是结构分离。
  • 简答题话术模版(背诵!):

    • 问:为什么要用这个模式?

    • 答: 该模式遵循了"开闭原则"(对扩展开放,对修改关闭)。它将 [具体业务X] 与 [具体实现Y] 解耦,提高了系统的 可扩展性可维护性**。当增加新的 [Z类型] 时,无需修改现有代码,只需新增一个类即可。

3. 论文写作 (下午题 II) ------ "套路化生存"

如果论文题目涉及"软件设计模式",这是送分题。你需要准备一个万能项目背景(如电商、金融、物流系统),并硬套 2-3 个模式进去。

论文结构建议 (基于2016/2018真题):

  1. 摘要 (300字)

    • 项目背景:XX电商平台。

    • 核心问题:支付方式多变、订单状态复杂、第三方系统接入难。

    • 解决方案:引入策略模式、观察者模式、适配器模式。

    • 结果:系统上线成功,运行稳定。

  2. 正文 (2000-2500字)

    • 第一部分:项目概述 (400字)。简述项目功能和架构。

    • 第二部分:理论过渡 (400字)。简述设计模式的重要性(重用设计、提高代码质量)。

    • 第三部分:实战应用 (核心,1200字,分点论述)

      • 小标题1:策略模式解决支付渠道多变问题。

        • 问题:原有代码中大量 if(type=="alipay"),难以维护。

        • 设计:定义 PaymentStrategy 接口,实现 AliPayStrategy, WeChatPayStrategy。

        • 效果:新增银联支付时,只需新增类,无需改动核心逻辑。

      • 小标题2:观察者模式处理订单状态联动。

        • 问题:订单支付成功后,需通知库存、积分、短信等多个子系统,耦合度太高。

        • 设计:订单服务作为 Subject,库存、积分为 Observer。

        • 效果:实现了核心业务与辅助业务的解耦,方便动态增减监听者。

      • 小标题3:适配器模式兼容老旧ERP接口。

        • 问题:新电商系统需对接旧ERP库存接口,格式不兼容。

        • 设计:创建 ERPAdapter 类实现标准接口,内部调用旧ERP API。

    • 第四部分:总结 (300字)。

      • 优点总结。

      • 不足与改进 (必须写):例如"过多的模式使用导致类数量增加,系统复杂度略有上升,后续需注意控制粒度"。


四、 避坑指南(幻觉规避)

在备考和答题时,注意以下易混淆点,不要产生"知识幻觉":

  1. 架构模式 vs 设计模式

    • 考试问"架构模式"时,千万别答"工厂模式"!

    • 架构模式:MVC, MVP, MVVM, 微服务, SOA, 管道-过滤器, 黑板模式, Wrapper Facade (2013年考过,虽带Facade字样,但在该题中作为架构风格考察)。

    • 设计模式:GoF 23种。

  2. 简单工厂 (Simple Factory) 不是 GoF 23种之一

    • 虽然常考,但严格分类时,GoF只有"工厂方法"和"抽象工厂"。如果问"以下属于GoF设计模式的是?",小心简单工厂可能是干扰项(取决于题目严谨度,通常作为入门概念考察)。
  3. 状态模式 vs 策略模式

    • 类图几乎一样。

    • 区分点

      • 策略模式 :客户端主动选择具体的算法(Client 知道 StrategyA)。

      • 状态模式 :状态流转通常在内部自动发生,客户端不一定关心当前是哪个状态类。

五、 总结与行动计划

  1. 本周任务:熟背 23 种模式的分类表(创建/结构/行为)。

  2. 刷题重点:打开历年真题(特别是 2015-2022),只做上午题中的设计模式题,找题感。

  3. 案例突破:找两道经典的下午题(如 2016 下午 I),对着答案看 UML 图,直到能独立画出核心结构。

  4. 论文准备:按照上面的模板,把你的实际项目经验"翻译"成设计模式的语言,写一篇 2500 字的范文存在电脑里。

相关推荐
湘-枫叶情缘14 小时前
1990:种下那棵不落叶的树-第6集 圆明园的对话
linux·系统架构
书院门前细致的苹果14 小时前
设计模式大全:单例、工厂模式、策略模式、责任链模式
设计模式·责任链模式·策略模式
Light6019 小时前
智链未来:彭山物流园区从物理基建到数据智能体的全维度构建方案
人工智能·系统架构·数字孪生·智慧物流·实施路径·彭山项目
学历真的很重要21 小时前
【系统架构师】第二章 操作系统知识 - 第二部分:进程与线程(补充版)
学习·职场和发展·系统架构·系统架构师
C澒1 天前
Vue 项目渐进式迁移 React:组件库接入与跨框架协同技术方案
前端·vue.js·react.js·架构·系统架构
BD_Marathon1 天前
设计模式——依赖倒转原则
java·开发语言·设计模式
BD_Marathon1 天前
设计模式——里氏替换原则
java·设计模式·里氏替换原则
jmxwzy1 天前
设计模式总结
设计模式
roman_日积跬步-终至千里1 天前
【系统架构设计师-综合知识】系统知识点说明
系统架构
子春一1 天前
Flutter for OpenHarmony:形状拼图:基于路径几何与空间吸附的交互式拼图系统架构解析
flutter·系统架构