知识卡片

整洁架构四层的具体职责:业务实体、用例、接口适配器、框架驱动

普通读书笔记卡

内容

[[整洁架构综合多种架构思想的五个共同特征与依赖关系规则]]的四层各自承担明确职责。业务实体层封装整个系统的关键业务逻辑,可以是带方法的对象,也可以是数据结构和函数的集合,唯一要求是能被系统中不同应用复用——即便是单一应用,其业务实体也该是最不容易受外界影响而变动的部分,页面导航方式的调整、安全问题的修改、运行时行为的变更都不该触及它。用例层包含特定应用场景下的业务逻辑,封装并实现系统所有用例,引导数据在业务实体间流入流出、指挥业务实体调用其关键业务逻辑来达成用例目标;这一层既不该被自己的变更波及业务实体,也不该受数据库、UI、常见框架这些外部因素影响——但应用行为的变化确实会影响用例本身,用例细节变了,这一层的代码自然要跟着改。接口适配器层本质是一组数据转换器,负责把数据从用例和业务实体最方便操作的格式,转换成外部系统(数据库、Web)最方便操作的格式——展示器、视图、控制器都属于这一层(模型部分由控制器传给用例、再由用例传回展示器和视图),同一层还负责把数据从业务实体和用例最方便的格式转换成持久化框架最方便的格式,如果用的是SQL数据库,所有SQL语句都该被限制在这一层里、且仅限于需要操作数据库的那部分代码,来自外部服务的数据同样在这层被转换成系统内部需要的格式。框架与驱动程序层是图中最外层,由工具、数据库、Web框架等组成,通常只需要编写与内层沟通的黏合代码——这一层包含所有实现细节,Web是实现细节,数据库也是实现细节,被放在最外层正是为了不让它们轻易影响到其他层。

参考来源

- 位置:《架构整洁之道》第22章《整洁架构》"业务实体""用例""接口适配器""框架与驱动程序"(源文件:_epub-src/text/part0014_split_007.html) - 结论依据:原文分别定义业务实体(最通用高层业务逻辑,可复用)、用例(特定应用场景业务逻辑,隔离外部因素但受应用行为变化影响)、接口适配器(数据转换器,含MVC三要素与数据库转换职责)、框架与驱动程序(最外层实现细节,只需黏合代码)四层职责,直接支撑本卡片结论。 - 原始内容:业务实体这一层中封装的是整个系统的关键业务逻辑……我们既不希望在这一层所发生的变更影响业务实体,同时也不希望这一层受外部因素……的影响……展示器、视图、控制器都应该属于接口适配器层……框架与驱动程序层中包含了所有的实现细节。