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

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

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

相关推荐
彷徨的蜗牛1 天前
智能AI自动化协同发文系统架构设计:从理论到实践的完整指南
人工智能·系统架构·自动化
szm02251 天前
设计模式-
设计模式
砍光二叉树1 天前
【设计模式】创建型-抽象工厂模式
设计模式·抽象工厂模式
x2lab1 天前
软考架构-需求工程备考主线框架
系统架构·软考高级
砍光二叉树1 天前
【设计模式】创建型-工厂方法模式
设计模式·工厂方法模式
我爱学习_zwj1 天前
设计模式-2(单例模式与原型模式)
前端·javascript·设计模式
砍光二叉树1 天前
【设计模式】创建型-单例模式
单例模式·设计模式
我爱学习_zwj1 天前
设计模式-3(装饰器模式)
前端·设计模式·装饰器模式
LONGZETECH2 天前
新能源汽车充电设备装配与调试仿真教学软件 技术解析与教学落地
开发语言·系统架构·汽车·汽车教学软件·智能网联汽车软件
xcLeigh2 天前
飞算 JavaAI 智能突破:从效率工具到开发范式的革新
ai·系统架构·代码生成·java开发·飞算javaai炫技赛·飞算