站在 MVC 和 EBI 的肩膀上
整洁架构示意图的右下角的这张小图说明了控制流是如何工作的。这张小图并没还有提供太多信息,但博客中的说明和 Robert C. Martin 的会议演讲拓展了该话题。

我们在上图的左侧看到的是 MVC 中的视图和控制器。双实线另一层的所有形状都是 MVC 中的模型。这些模型也代表着 EBI 架构(我们可以清楚的看到边界、交互器和实体),六边形架构中的“应用”、洋葱架构中的“应用核心”,以及前面整洁架构示意图中的“实体”层和“用例”层。
假设有一个 HTTP 请求按照控制流到达了控制器。控制器接下来会:
- 拆解请求;
- 使用相关数据创建一个请求模型;
- 执行交互器(作为交互器接口的,即边界的,实例被注入到控制器中)中的方法并将请求模型传递给它;
- 交互器会:
4.1. 使用实体网关实现(作为实体网关接口的实例被注入到交互器中)查找相关实体;
4.2. 编排实体之间的交互;
4.3 用操作的数据结果创建响应模型;
4.4 将响应模型交给展示器进行填充;
4.5 将展示器返回给控制器; - 使用展示器生成视图模型;
- 将视图模型绑定到视图;
- 将视图返回给客户端。
这里只有“展示器”的用法我有些疑问,我在项目中的实际做法和这里不太一样。我会某种 DTO 类型的数据返回给交互器,而不是注入一个填充了数据的展示器对象。
我通常会采用实际上是一种 MVP 实现,控制器在其中负责从客户端接收数据并响应它
作者:qinyu
链接:https://www.jianshu.com/p/b565f0c00c0c