一、“4+1”架构是啥?—— 从“5个视角”看透软件的“骨架” ⭐
关键字:多重视图、逻辑/开发/进程/物理/场景视图
👀
想象你要“描述一栋房子”:你会说“有卧室/客厅(功能)”“用钢筋/水泥(材料)”“在XX小区(位置)”… “4+1”架构就是用
5个不同视角
描述软件,每个视角讲清楚软件的一个维度~
📚 课本核心:
“4+1”是Philippe Kruchten提出的架构模型,包含
4个核心视图+1个场景视图
:每个视图只讲软件的“一部分”,合起来就能完整描述软件的结构。
🏠 类比实践:
比如做“外卖APP”: - 你会先想“用户能点单、商家能接单”(场景视图); - 再想“APP里有用户类、订单类、商品类”(逻辑视图); - 接着想“代码要分成‘用户模块’‘支付模块’”(开发视图)… 这就是“4+1”的思路~
二、“4+1”的5个视图—— 每个视图都是软件的“放大镜” 🔍
关键字:逻辑视图、开发视图、进程视图、物理视图、场景视图
- 场景视图(“+1”的那个“1”) 🧑💻
这是
用户视角
!对应UML的“用例图”,描述“用户能在软件里做啥”。
💡 举例:
外卖APP的场景视图就是“用户下单→商家接单→骑手配送”的流程,它是所有视图的
核心(用例驱动)
——先明确用户要啥,再想怎么实现。
- 逻辑视图 🧠
这是
功能视角
!对应UML的“类图”,描述“软件里有哪些类、对象,它们咋协作实现功能”。
💻 代码类比:
外卖APP的逻辑视图会画:
// 订单类(逻辑视图里的“类”)
class 订单 {
属性:订单号、金额、状态
方法:创建订单()、支付订单()
}
// 用户类和订单类的关系(逻辑视图里的“关联”)
class 用户 {
方法:提交订单(订单 o)
}
新手写代码前画逻辑视图,就能理清“代码的骨架”~
- 开发视图 🛠️
这是
程序员视角
!对应UML的“组件图”,描述“代码怎么分组、模块咋组织”(比如哪些代码放一个文件夹)。
📁 实践细节:
外卖APP的开发视图会把代码分成: -
com.waimai.user
(用户模块) -
com.waimai.order
(订单模块) 这样程序员写代码时“找文件更方便”,模块也能重复使用~
- 进程视图 ⚡
这是
性能视角
!描述“软件运行时的进程、线程咋协作”,关注“并发、稳定性”(比如外卖APP同时有1000个用户下单,系统咋不崩溃)。
🌰 现实场景:
外卖APP的“支付功能”会用“单独的线程”处理,避免用户点单时“卡着等支付”——这就是进程视图要考虑的“并发问题”。
- 物理视图 🖥️
这是
硬件视角
!对应UML的“部署图”,描述“软件要装在哪些服务器上”(比如外卖APP的“用户数据”存在阿里云服务器,“订单数据”存在腾讯云服务器)。
🚀 实践价值:
比如“双11”时,电商平台会加服务器(物理视图调整),保证系统不崩溃——这就是物理视图要解决的“部署和性能”问题。
三、“4+1”咋用?—— 从“需求”到“实现”的流水线 🏭
关键字:用例驱动、分而治之、视图协作
📌 步骤1:先画场景视图(抓需求)
比如做“图书馆管理系统”,先画“读者借书、管理员还书”的用例图——这是“一切的起点”。
📌 步骤2:用逻辑视图细化场景(拆功能)
从“借书场景”里找出“读者类、书籍类、借书记录类”,画类图描述它们的关系。
📌 步骤3:用开发/进程/物理视图落地(想实现)
比如: - 开发视图:把“借书功能”做成独立模块; - 进程视图:借书时用“异步线程”记录日志; - 物理视图:把“书籍数据库”装在高性能服务器上。
⚠️ 现实复杂场景:
大型系统(比如微信)的“4+1”视图是
动态调整
的:比如用户量暴增,就要改“进程视图”(加线程)和“物理视图”(加服务器),但“场景视图”(用户发消息)是不变的~
四、为啥要学“4+1”?—— 新手也能搭出“不塌的软件” 🏗️
🤔 新手痛点:
很多人写代码“想到哪写到哪”,最后代码像“一团乱麻”——“4+1”就是帮你“先搭骨架,再填肉”,让软件“结构清晰、好维护”。
💡 总结:
“4+1”架构是
软件的“设计蓝图”
:就像盖楼前先画“平面图、结构图、水电图”,用“4+1”画好软件的5个视图,写代码时就不会“跑偏”啦~