知识卡片

分层架构的核心思想:封装外部交互

普通读书笔记卡

内容

无论是更严谨的[[四层架构更经典三层是四层的特例]],还是简化后的三层架构,都贯穿着同一个明确的设计思想——封装外部交互。外部用户,通过UI交互层封装与其的交互;外部系统,通过系统交互层封装与其的交互;底层硬件,同样通过系统交互层封装与其的交互;文件系统或数据库系统,通过数据管理层封装与其的交互。这套封装安排带来的核心收益是:业务层(或PD层)不再需要”知道”上述这些交互细节,可以更专注地关心领域本身的逻辑——业务层的代码不需要关心用户输入是通过Web页面还是命令行来的,不需要关心持久化数据存放在MySQL还是文件里,不需要关心和外部系统的通信协议是HTTP还是消息队列,这些交互细节全部被隔离在各自专门的层里。理解这条核心思想的价值在于:它给”到底该怎么分层”这个问题提供了一个统一的判断标准——判断某段代码该放进哪一层,本质上是在问”这段代码是在和系统之外的哪一种事物打交道”,如果答案是”用户”就归UI层,”外部系统或硬件”就归系统交互层,”持久化存储”就归数据管理层,如果都不是、纯粹是业务规则本身,就归问题领域层——这个判断标准比死记”这层该叫什么名字”要实用得多,也是后续”如何从上下文图设计分层架构”这个实践技巧的理论基础。

参考来源

- 位置:《软件架构设计:程序员向架构师转型必备》第13章《如何分层》"13.2.1 设计思想:分层架构的'封装外部交互'思想"节(源文件:_epub-src/OEBPS/text00016.html) - 结论依据:原文说明"无论是更严谨的'UI层+SI层+PD层+DM层'四层架构,还是简化之后的'展现层+业务层+数据层'三层架构,都包含着明显的'封装'设计思想——更具体而言,是'封装外部交互'……于是,'业务层'或'PD层',就不需要'知道'上述这些交互细节,可以更专注地关心领域本身的逻辑了",直接支撑本卡片结论。 - 原始内容:外部用户——通过"UI交互层"封装与其的交互……于是,"业务层"或"PD层",就不需要"知道"上述这些交互细节,可以更专注地关心领域本身的逻辑了。