← 返回首页
必考架构风格

软件架构风格

案例分析每年必考第 1 题的核心,通常 5~10 分名词解释 + 风格选择

必考 · 每年 分值 10~25 论文常作主线
⭐ 必背:5 大类架构风格分类

架构风格(Architectural Style)是描述某一特定应用领域中 系统组织方式 的惯用模式 —— 定义了一组构件、连接件、约束、组合规则。

Garlan 和 Shaw 将主流风格分为 5 大类:

「数据流、调用返回、独立构件、虚拟机、仓库」

背诵口诀:数调独立虚拟仓库 → "数调独虚仓"

一、5 大类风格速记表

大类子风格核心特征典型应用
数据流批处理整批数据顺序流转编译器、统计
管道-过滤器流式数据 + 增量处理Unix Shell、ETL、编译器
调用/返回主程序-子程序过程式分解结构化程序
面向对象对象封装 + 消息OO 系统
层次结构每层只调用相邻下层OSI、操作系统、TCP/IP
独立构件进程通信构件间显式通信分布式系统
事件驱动 / 隐式调用构件订阅事件,松耦合GUI、消息总线、EDA
虚拟机解释器解释虚拟指令JVM、SQL 引擎、脚本
基于规则的系统规则库 + 推理机专家系统、AI
仓库数据库系统中央数据 + 多构件访问OLTP 系统
超文本系统节点 + 链接Web、Wiki
黑板系统知识源 + 黑板 + 控制语音识别、AI、模式识别
记忆口诀:数(批·管)→ 调(主·OO·层)→ 独(进·事)→ 虚(解·规)→ 仓(库·文·黑)

二、必考子风格详解

1. 管道-过滤器(Pipe-Filter)

构件过滤器(Filter) 连接件管道(Pipe) 特点数据流单向流动;过滤器独立,无状态;支持并行
优点
  • 组件可独立开发和复用
  • 支持并发执行,提高吞吐
  • 易于增量扩展、易理解
缺点
  • 不适合交互式系统
  • 难处理错误恢复
  • 数据传输有性能开销(解析/封装)
典型例子
编译器 4 阶段(词法→语法→语义→代码)、Unix Shell 管道 cat a | grep x | wc -l、ETL、CI/CD 流水线。

2. 客户端/服务器(C/S)与浏览器/服务器(B/S)

对比项C/S 两层三层 C/SB/S
构成客户端 + 数据库表现 + 应用 + 数据浏览器 + Web + DB
客户端胖客户端瘦/胖极瘦 (浏览器)
升级维护每台都要装仅升级中间层仅升级服务器
跨平台差较好极好
性能/响应最好较好受网络影响大
典型场景桌面 ERP大型 OA互联网网站

3. MVC / MVP / MVVM

MVCModel-View-Controller:控制器中转;视图与模型可直接通信 MVPModel-View-Presenter:Presenter 处理所有逻辑,View 与 Model 隔离 MVVMModel-View-ViewModel:双向数据绑定,前端框架 Vue/Angular 常用
案例分析常问点
"为何使用 MVC?" → 答 关注点分离、视图可替换、有利于团队分工、提高可维护性和可测试性。

4. 事件驱动 / 隐式调用(EDA)

机制构件发布事件 → 总线分发 → 订阅者响应 优点松耦合、可扩展、动态接入 缺点控制流难追踪、事件顺序不可控、调试困难 典型GUI、消息总线、Reactive、Node.js

5. 黑板架构(Blackboard)

三大要素知识源(KS)+ 黑板(共享数据)+ 控制器 特点不确定知识、近似解、协同求解 应用语音识别、图像识别、专家系统、AI 推理
判断口诀:"不确定 + 协作 + 模式识别" → 黑板架构

6. 解释器(Interpreter)

组成解释引擎 + 被解释程序 + 状态 + 控制状态 应用JVM、CLR、SQL 引擎、规则引擎、DSL 优点灵活性高、可动态修改;性能差

7. 富互联网应用(RIA)

定义把桌面应用体验搬到浏览器:富交互 + 异步通信 + 数据缓存 关键技术AJAX、SPA、本地存储、WebSocket、Flex/Silverlight(已过时)

8. 面向服务架构(SOA)

特点服务是基本单元 + 松耦合 + 标准化接口 + 通过 ESB 集成 关键技术Web Service(SOAP+WSDL+UDDI)、ESB、BPEL、SCA、REST
SOA vs 微服务(论文常考对比)

SOA: 粗粒度服务、ESB 总线集中编排、技术栈受限、企业级整合

微服务: 细粒度、去中心化、每个服务独立部署/技术栈、用 API Gateway + 服务注册中心

三、案例分析答题模板

题型 1:给一个系统场景,选择合适的架构风格

四步答题法:

  1. 识别关键词:抓住"数据流""松耦合""模式识别""不确定""分布式""跨平台"等词。
  2. 选定风格:用第一节表格映射(关键词 → 风格)。
  3. 说明特征:答出构件、连接件、关键约束。
  4. 结合题目论证:把题中需求映射到风格优点上,得分点!
关键词 → 风格速查
  • 流式数据 + 增量处理 → 管道-过滤器
  • 跨平台 + 浏览器 → B/S
  • 松耦合 + 可扩展 → 事件驱动 / EDA
  • 不确定 + 协作 + AI → 黑板
  • 规则多变 + 易扩展 → 解释器 / 基于规则
  • 视图多 + 可维护 → MVC / 分层
  • 服务复用 + 跨企业集成 → SOA
  • 独立部署 + 弹性伸缩 → 微服务
题型 2:比较两种架构风格的优缺点

三维度比较法(背):

维度 1耦合性 / 复用性 维度 2性能 / 可扩展性 维度 3可维护性 / 开发难度 / 部署成本

每个维度写 1~2 句对比,字数撑起来,得分点稳。

题型 3:为何采用某风格 / 风格改造

答题套路:

  1. 原系统的缺陷(对应不满足某质量属性,如可扩展性差)
  2. 新风格的核心特征(2~3 点)
  3. 新风格如何对应解决缺陷(扣回题目)
  4. 可能引入的新问题(性能、复杂度等,体现思考深度)

四、必背口诀总览

五大类口诀:数调独虚仓

数据流:批·管

调用返回:主·OO·层

独立构件:进·事

虚拟机:解·规

仓库:库·文·黑

风格选型口诀:

流式数据走管道 · 跨平台用 B/S

松耦合靠事件驱动 · 模糊推理选黑板

规则多变用解释器 · 视图多用 MVC

企业集成上 SOA · 弹性伸缩拆微服务

✅ 自测 3 连

1. 编译器属于哪种架构风格?为什么?

2. 一个语音识别系统适合用什么风格?核心三要素是什么?

3. SOA 与微服务的本质区别在哪 3 点?

答案:1) 管道-过滤器,数据流单向 + 增量处理 + 阶段独立。 2) 黑板,知识源 + 黑板 + 控制器。 3) 粒度、集成方式(ESB vs 网关)、技术栈选择。

📕 必考章节 1/3 · 架构风格 完