知识卡片
分层架构的三大好处
内容
[[三层架构的职责划分与调用关系]]这样的分层设计带来三个显而易见的好处,每一条都能追溯到具体的机制原因。一,实现了一定程度的关注点分离,利于各层逻辑的重用——因为一层内部的逻辑只处理该层职责范围内的事情,同一层内相似的处理逻辑(比如数据访问层里两个模块都做类似的CRUD操作)就有了被提炼、共享的基础,一个具体例子是《基于动态链接库的复杂信息系统分层框架设计》一文中,业务层的”模块2”和数据访问层的”模块2”都在一定程度上被重用了。二,规范化了层间的调用关系,可以降低层与层之间的依赖——正因为每一层只能按约定的方向调用相邻层(如展现层不能跳过业务层直接调用数据层),层与层之间的耦合被压缩成了少数几条明确定义的调用路径,而不是任意两个模块都可能互相纠缠。三,如果层间接口设计合理,用新的实现替换原有层次的实现也不是什么难事——因为上层依赖的是接口而不是具体实现,只要新实现遵守既有接口约定,替换某一层的内部实现就不会波及到其他层,比如把数据层从关系数据库换成NoSQL,只要数据访问接口不变,业务层完全不用改动。这三条好处环环相扣:关注点分离是基础,它带来了调用关系的规范化,而规范化的调用关系又为”接口稳定、实现可替换”这个更高层次的能力提供了前提。
参考来源
- 位置:《软件架构设计:程序员向架构师转型必备》第13章《如何分层》"13.1.2 案例一则"节(源文件:_epub-src/OEBPS/text00016.html)
- 结论依据:原文说明"分层架构有一些显而易见的好处:1)它实现了一定程度的关注点分离,利于各层逻辑的重用;2)它规范化了层间的调用关系,可以降低层与层之间的依赖;3)如果层间接口设计合理,则用新的实现来替换原有层次的实现也不是什么难事",并举例说明业务层与数据访问层模块的重用,直接支撑本卡片结论。
- 原始内容:分层架构有一些显而易见的好处:1)它实现了一定程度的关注点分离,利于各层逻辑的重用;2)它规范化了层间的调用关系,可以降低层与层之间的依赖;3)如果层间接口设计合理,则用新的实现来替换原有层次的实现也不是什么难事。