知识卡片
架构风格与架构模式的本质区别
内容
很多人把架构风格和架构模式混为一谈,但两者的判定标准不同:架构风格是对架构整体方案的展现形式,反映的是方案实施后的效果,与”是否最佳”无关;架构模式仍是设计模式的一种,本质是一个”问题-解决方案对”(problem-solution pair),反映的是针对某个具体需求问题,目前为止公认的最佳解决方案是什么。也就是说,风格描述”长什么样”,模式回答”这个问题该怎么解”。这一区分并非全无争议——Mary Shaw和David Garlan认为两者是可通用的术语;但Frank Buschmann认为二者有实质区别:架构风格主要描述应用系统的总体结构框架,而架构模式可以存在于各种规模和抽象层次上(从总体结构到具体编程语言的惯用法);架构风格相对独立,各系统采用不同风格后彼此关联较少,而模式往往依赖它所包含的更小模式、或与其他模式相互作用;架构模式比架构风格更面向问题,通常由”问题出现的语境+解决方案+适用场景”三部分组成,而风格更侧重抽取总体组织结构、较少涉及具体设计环境。理解这个区别的实践价值在于:当你在讨论”要不要用某个风格/模式”时,风格层面的讨论应该聚焦”这个整体组织方式带来什么效果”,模式层面的讨论则应该先问”我面对的到底是什么问题”,混用两个层次的讨论容易导致决策标准漂移。
参考来源
- 位置:《软件架构理论与实践》第4章《软件架构的风格与模式》"4.4 软件架构模式"及"4.5 本章小结"节(源文件:_epub-src/OEBPS/text00035.html、text00036.html)
- 结论依据:原文说明"Mary Shaw和David Garlan认为架构风格等同于架构模式……但Frank Buschmann认为体系结构的模式与风格是有区别的",并逐条列出三点区别,本章小结进一步总结"模式是针对某个特定问题的一种最好的解决方案……而风格则反映设计效果,与问题无关",直接支撑本卡片结论。
- 原始内容:软件架构风格是对软件架构整体方案的展现形式,反映的是整体方案实施之后的效果;软件架构模式仍然是软件设计模式的一种,也是一种问题-解决方案对(problem-solution pair),反映的是针对某个需求问题,至今为止最佳的解决方案是什么。