第二关 · 架构风格与模式
总时长:48 小时 | 目标:解决"面对不同场景,怎么选最合适的架构风格?" 考试映射:综合知识 5-8 题 | 案例分析:⭐ 2022年11月必答题(面向对象 vs 解释器,13分) | 论文:《论软件架构风格的选择与应用》⭐ 2017年论文真题
Step 1:本关资料(海量输入)
| 资料类型 | 具体资料 | 用途 | |---------|---------|------| | 教材 | 《架构师教程》第 4-5 章(架构风格、设计模式) | 掌握五大分类、风格对比标准 | | 真题 | 2020-2025 综合知识·架构风格部分(约 35 题) | 锁定高频考点(风格分类、设计模式分类) | | 案例真题 | 2022年11月案例一(面向对象 vs 解释器,13分)+ 2021年11月案例一(解释器 vs 管道过滤器 vs 隐式调用) | 背诵标准答题模板 | | 论文参考 | 2017 下《论软件架构风格的选择与应用》真题范文 | 学习论文中架构风格的展开方式 |
精准阅读策略:
- 五大架构风格分类表是必背,先背这个表
- 管道-过滤器优缺点(5优3劣)是必背,每年考
- GoF 23 种设计模式的创建/结构/行为分类是必背,每年考
Step 2:本关心智模型
模型 1:架构风格五维分类——"架构风格是系统组织方式的'范式'"
- 核心思想:架构风格是对系统组织方式的分类,就像写作有"议论文、记叙文、说明文"一样,软件架构也有"数据流风格、调用/返回风格、独立构件风格、仓库风格、虚拟机风格"。选对风格 = 架构成功一半。
- 关键变量:数据流动方式、控制流方式、构件间耦合程度
- 应用场景:案例题中"应该采用什么架构风格",论文中"为什么选这个风格"
- 局限性:实际系统通常是多种风格的混合,不会只属于某一种
- 考试映射:每年必考 3-5 题(风格分类、典型实例匹配)
| 大类 | 包含风格 | 核心特征 | 典型实例 |
|------|---------|---------|---------|
| 数据流风格 | 批处理序列、管道-过滤器 | 数据从一个构件流向另一个构件 | UNIX 管道 ls \| grep |
| 调用/返回风格 | 主程序-子程序、面向对象、层次架构 | 显式的调用和返回控制 | MVC、分层架构 |
| 独立构件风格 | 进程通信、事件驱动系统 | 构件独立运行,通过消息通信 | 微服务、消息队列 |
| 仓库风格 | 数据库系统、黑板系统、超文本 | 中央数据结构 + 独立构件 | 传统数据库、AI 识别系统 |
| 虚拟机风格 | 解释器、基于规则的系统 | 模拟执行环境 | 规则引擎、虚拟机 |
记忆法:数据在流动 / 函数在调用 / 各自在干活 / 有个中央仓库 / 模拟执行
模型 2:风格对比决策矩阵——"没有最好的风格,只有最适合的风格"
- 核心思想:架构风格的选择本质上是在多个质量属性之间做权衡。解释器灵活但慢,面向对象快但不灵活,管道-过滤器高内聚但不适合实时交互。架构师的工作就是根据项目的优先级(什么最重要)来选择。
- 关键变量:可修改性、灵活性、系统性能(考试三大对比维度)
- 应用场景:案例题标准答题模板(李工 vs 王工对比题)
- 局限性:对比维度不止这三个,考试中根据题干要求对比即可
- 考试映射:案例分析必考对比题(13-25 分),按固定模板答
模型 3:设计模式分类——"23 个模式是面向对象设计的'词汇表'"
- 核心思想:设计模式是对常见设计问题的标准解决方案,分为创建型(怎么创建对象)、结构型(怎么组合对象)、行为型(对象间怎么通信)三类。不需要背 23 个模式的细节,但必须记住每个模式属于哪一类。
- 关键变量:创建型(5种)、结构型(7种)、行为型(11种)
- 应用场景:综合知识选择题("X 模式属于什么类型?")
- 局限性:设计模式不是银弹,过度使用会导致代码复杂化
- 考试映射:每年必考 2-3 题(模式分类 + 典型场景匹配)
| 类型 | 包含模式 | 考试重点 | |------|---------|---------| | 创建型(5种) | 单例、工厂、抽象工厂、建造者、原型 | 原型属于创建型 ⭐ | | 结构型(7种) | 适配器、装饰器、代理、外观、桥接、组合、享元 | 装饰器属于结构型 ⭐ | | 行为型(11种) | 观察者、策略、模板方法、命令、状态、迭代器、中介者、备忘录、访问者、解释器、职责链 | 观察者、解释器属于行为型 ⭐ |
Step 3:本关分歧点
分歧点 1:解释器风格 vs 面向对象风格——"灵活性"还是"性能"?
| 维度 | A 方:解释器风格 | B 方:面向对象风格 | |------|----------------|-----------------| | 核心信念 | 规则应该独立于程序代码,让用户自己定义 | 规则就是程序逻辑,编译执行效率最高 | | 可修改性 | ✅ 强:修改规则只需改规则文件,无需改代码 | ❌ 弱:规则变化需要修改具体类 | | 灵活性 | ✅ 强:可做到千人千面,运行时动态解释 | ❌ 弱:规则以程序逻辑实现,灵活性差 | | 系统性能 | ❌ 弱:加载→解析→绑定→执行,开销大 | ✅ 强:编译后直接执行,效率高 | | 适用 | 规则频繁变化、用户自定义规则 | 性能要求高、规则相对稳定 |
考试倾向:近年案例题偏向解释器风格(2022、2025上),因为题目中通常说"系统性能不做过多考虑",从而选择灵活性更强的解释器。答题时一定要引用题干约束条件。
为什么重要:这是案例分析的高分题(13-25分),掌握标准答题模板就能稳拿分。
分歧点 2:管道-过滤器 vs 过程控制——"数据流动"还是"持续监控"?
| 维度 | A 方:管道-过滤器 | B 方:过程控制 | |------|-----------------|--------------| | 核心信念 | 数据像流水一样经过多个处理站 | 系统持续监控输入,根据控制逻辑调整输出 | | 数据流 | 批量、单向流动 | 持续、反馈循环 | | 典型实例 | UNIX 管道、ETL 数据处理 | 空调调温器、工业控制系统 | | 考试陷阱 | 空调调温器不是管道-过滤器!是过程控制! | — |
考试倾向:2023年11月真题考了空调调温器(答案:过程控制),2021年考了机器学习平台(答案:解释器)。区分关键是"是否有持续的反馈循环"。
分歧点 3:黑板系统 vs 数据库系统——"都是中央存储,区别在哪?"
| 维度 | A 方:黑板系统 | B 方:数据库系统 | |------|--------------|----------------| | 核心特征 | 知识源独立运行,通过黑板状态驱动 | 客户端-服务器模式,主动查询 | | 控制方式 | 被动(黑板状态变化触发知识源) | 主动(客户端发起请求) | | 典型应用 | AI 推理、语音识别、模式识别 | 传统业务系统 | | 三组件 | 黑板数据结构 + 知识源 + 控制 | 表 + 行 + 列 |
考试倾向:黑板系统三组件定义是必考点,记住"知识源之间不直接通信,通过黑板通信"。
Step 4:闯关任务(动手验证)
任务 1:架构风格场景匹配(2h)
为以下 5 个场景选择最合适的架构风格,写出理由(每个 100 字):
- 智能家居设备数据处理(传感器→清洗→存储→告警)
- 电商促销规则引擎(折扣规则频繁变化)
- 在线聊天系统(多用户实时通信)
- 语音识别系统(多模块协同识别)
- 企业 ERP 系统(财务、库存、采购多模块协作)
任务 2:案例题标准答题练习(3h)
背诵并默写 2022年11月案例题标准答案模板(面向对象 vs 解释器对比),注意:
- 每个维度"谁好 + 为什么好"
- 最后写选型结论 + 引用题干约束
任务 3:论文草稿——架构风格选择(3h)
以 AIoT 项目为背景,写一篇 1500 字的论文草稿:
- 项目概述(300字)
- 选择两种架构风格的理由(600字)
- 实施效果与反思(600字)
Step 4.5:💬 AI 教练对话
使用时机:做选择题不确定时、写论文需要素材时、案例题对比分析练习时
Review Agent(架构风格选择题)
我正在做架构风格的选择题。
题目:[粘贴题目]
我的答案:[选 A/B/C/D]
请帮我:
1. 判断对错
2. 解释为什么选这个
3. 其他选项分别是什么架构风格
4. 这个知识点在考试中还有哪些常见考法
Theory Agent(场景匹配练习)
请给我 5 个系统场景描述,让我判断应该用什么架构风格。
要求:
1. 场景要贴近实际工作(IoT、电商、SaaS 等)
2. 每个场景有 2-3 个候选风格,需要权衡
3. 给我答案后,解释"为什么选这个而不是那个"
Step 5:关 AI 自测
⚠️ 关闭 AI,独立完成后再对照答案
自测题 1(综合知识风格)
某公司开发家用空调自动调温器,调温器测量外部空气温度,根据设定的期望温度控制空调的开关。应采用什么架构风格?
A. 管道-过滤器 B. 过程控制 C. 解释器 D. 黑板系统
点击查看答案
答案:B. 过程控制
空调调温器持续监控温度输入,根据控制逻辑(设定温度 vs 实际温度)调整输出(开关空调),这是一个典型的过程控制风格——持续反馈循环,不是管道-过滤器的单向数据流。
陷阱:不要选管道-过滤器!温度调节是持续监控+反馈,不是批量数据处理。
自测题 2(设计模式分类)
下列关于设计模式的说法,正确的是?
A. 装饰器模式属于行为模式 B. 原型属于创建型 C. 解释器和代理模式是同一类模式 D. 观察者模式属于结构型模式
点击查看答案
答案:B. 原型属于创建型
- A 错:装饰器属于结构型模式
- C 错:解释器属于行为型,代理属于结构型,不同类
- D 错:观察者属于行为型模式
自测题 3(案例分析风格)
某电商平台需要灵活设置促销折扣规则,系统性能不做过多考虑。李工建议面向对象架构风格,王工建议解释器架构风格。请从可修改性、灵活性、系统性能三方面对比分析,并给出选型建议。
点击查看答案
该系统更适合王工建议的解释器架构风格。
可修改性:解释器风格比面向对象方式强。解释器风格中折扣规则是独立的语法规则,由解释器对变化的规则进行解析,修改更容易(编写新规则文件导入即可);而面向对象相对固定,有变化需要修改具体的类。
灵活性:解释器强于面向对象。解释器可以根据用户灵活解释执行规则,做到千人千面;面向对象通过策略模式定义规则对象,规则以程序逻辑实现,灵活性较差。
系统性能:面向对象优于解释器。面向对象以编译后代码运算,性能好;而解释器需要加载规则、解析规则、规则运算,再动态绑定执行,性能较差。
选型结论:从项目关注点来看,"系统性能不做过多考虑",则王工建议的解释器风格较为合适。
自测题 4(综合知识)
在仓库体系结构风格中,用以说明当前数据结构状态的是什么?
A. 知识源 B. 中央数据结构 C. 控制模块 D. 连接件
点击查看答案
答案:B. 中央数据结构
仓库风格的核心就是中央数据结构(黑板),知识源通过改变黑板数据来解决问题,控制完全由黑板的状态驱动。
Step 6:费曼输出 + 信心校准
一句话版本
架构风格 = 系统的组织方式,分为数据流/调用返回/独立构件/仓库/虚拟机五大类,选择的关键是根据项目需求在灵活性、性能、可修改性之间权衡。
三分钟版本
(对着镜子或录音讲 3 分钟,不看书)
架构风格是架构师选型的基本功。考试中有五大分类:数据流风格(管道-过滤器,像 UNIX 管道一样让数据流过多个处理站)、调用/返回风格(面向对象、分层架构,显式调用)、独立构件风格(微服务、事件驱动,构件独立运行)、仓库风格(数据库、黑板系统,中央数据+独立构件)、虚拟机风格(解释器、规则引擎,模拟执行)。
案例分析中最常考的是解释器 vs 面向对象的对比。解释器灵活但慢,面向对象快但不灵活。答题时从可修改性、灵活性、性能三个维度对比,最后一定要引用题干约束条件给出选型结论。
设计模式分三类:创建型(5种,如原型、单例)、结构型(7种,如装饰器、代理)、行为型(11种,如观察者、策略),每年必考分类题。
信心自评
| 知识点 | 信心 1-5 | 能否给别人讲清楚? | 需要复习? | |--------|---------|------------------|-----------| | 五大架构风格分类 | /5 | □ 能 □ 不能 | □ 需要 | | 管道-过滤器 5优3劣 | /5 | □ 能 □ 不能 | □ 需要 | | 黑板系统三组件 | /5 | □ 能 □ 不能 | □ 需要 | | 解释器 vs 面向对象对比 | /5 | □ 能 □ 不能 | □ 需要 | | 设计模式三分类 | /5 | □ 能 □ 不能 | □ 需要 | | 案例对比答题模板 | /5 | □ 能 □ 不能 | □ 需要 |
📌 常见误区
- "所有数据处理都是管道-过滤器" → 错!空调调温器是过程控制,不是管道-过滤器
- "黑板系统 = 数据库" → 错!黑板系统是被动触发(状态驱动),数据库是主动查询
- "解释器一定比面向对象好" → 错!性能要求高的场景(金融交易)不适合解释器
- "设计模式分类不用背" → 每年必考 2-3 题,不背就白白丢分
🔧 工程映射
- 微服务 = 独立构件风格(进程通信),消息队列 = 独立构件风格(事件驱动)
- 规则引擎(Drools)= 虚拟机风格(解释器),选择它意味着牺牲性能换取灵活性
- 数据 ETL = 管道-过滤器风格(数据提取→转换→加载)
✅ 通关标准
- [ ] 信心自评所有知识点 ≥ 4/5
- [ ] 三分钟版本能脱稿讲完
- [ ] 自测题正确率 ≥ 75%
- [ ] 能口述五大架构风格分类 + 每类包含哪些风格
- [ ] 能口述管道-过滤器的 5 个优点 + 3 个缺点
- [ ] 设计模式分类题正确率 100%
- [ ] 真题正确率 ≥ 80%
- [ ] 论文素材:完成架构风格相关论文初稿