知识卡片
"组件+交互"如何抽象概括具体设计
内容
[[组成派与决策派两大架构定义流派]]中组成派”架构=计算组件+组件间交互”这个定义看起来很抽象,但它的价值恰恰在于能把任何具体的架构设计方案,用统一的两个要素(组件、交互)高屋建瓴地表达出来——这是一种”降维总结”的能力,而不是脱离实际的空洞概括。以大家熟悉的MVC架构为例:一个采用MVC的软件系统包含Model、View、Controller三种组件,这三种组件通过交互来协作——View创建Controller后,Controller根据用户交互调用Model的相应服务,Model把自身的改变通知View,View再读取Model信息更新自身。这套具体协作机制无论多复杂,都可以被”组件+交互”这两个要素完整刻画:MVC的”具体架构设计决策”(谁创建谁、谁调用谁、谁通知谁)被抽象成了一张组件关系图。这个视角的实用价值在于,当面对一个陌生的架构方案时,先问”它由哪些组件组成”和”这些组件之间如何交互”这两个问题,往往就能快速抓住架构设计的核心骨架,而不被具体实现细节淹没——这也是为什么组成派定义虽然抽象,却在实践中始终好用:抽象程度换来的是跨具体技术栈的可迁移性。
参考来源
- 位置:《软件架构设计:程序员向架构师转型必备》第2章《解析软件架构概念》"2.2.1 软件架构关注分割与交互"节(源文件:_epub-src/OEBPS/text00005.html)
- 结论依据:原文以MVC为例说明"这3种组件通过交互来协作:View创建Controller后,Controller根据用户交互调用Model的相应服务,而Model会将自身的改变通知View,View则会读取Model的信息以更新自身",并总结"'组件+交互'可以将MVC等'具体架构设计决策'高屋建瓴地抽象地表达出来",直接支撑本卡片结论。
- 原始内容:采用MVC架构的软件包含了这样3种组件:Model、View、Controller……通过此例可以看出,"组件+交互"可以将MVC等"具体架构设计决策"高屋建瓴地抽象地表达出来。