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

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

不要死记硬背代码! 架构师考试对设计模式的考察核心在于"权衡(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 字的范文存在电脑里。

相关推荐
正宗咸豆花12 小时前
LangGraph实战:构建可自愈的多智能体客服系统架构
人工智能·系统架构·claude
漂洋过海的鱼儿12 小时前
设计模式——EIT构型(三)
java·网络·设计模式
Rysxt_17 小时前
CPU中断机制详解
系统架构·计算机硬件·cpu中断
数据与后端架构提升之路17 小时前
系统架构设计师常见高频考点总结之数据库
数据库·系统架构
爱学java的ptt20 小时前
万字亿集流量系统架构总结笔记(上)
笔记·系统架构
老蒋每日coding20 小时前
AI Agent 设计模式系列(十八)—— 安全模式
人工智能·安全·设计模式
柯西极限存在准则1 天前
第四章 计算机网络
计算机网络·系统架构
老蒋每日coding1 天前
AI Agent 设计模式系列(十六)—— 资源感知优化设计模式
人工智能·设计模式·langchain
老蒋每日coding1 天前
AI Agent 设计模式系列(十七)—— 推理设计模式
人工智能·设计模式
冷崖1 天前
桥模式-结构型
c++·设计模式