我需要 Clean Architecture 中的演示者吗?

Do I need presenter in Clean Architecture?

我正在尝试在微服务中实现 Clean Architecture,此服务 return JSON 响应。我需要演示者来呈现响应 DTO 还是只是将其发送回客户端

为了回答你的问题,我必须澄清两点: Clean Architecture 是一种高级设计模式,提倡明确的关注点分离。 Presenter 是软件设计模式 Model-View-Presenter 的一个组件。

我猜 DTO 来自不同的服务,在那种情况下是的。如果你想实现 Clean Architecture,你不应该将 DTO 暴露给客户端。

在 Clean Architecture 中,presenter 是将用例交互器的响应模型转换为最方便视图的响应对象的组件(例如,它可以将浮点数格式化为具有正确精度的字符串)。

在 API 服务的情况下,演示者会做同样的事情:服务内部数据结构和外部数据契约之间的对话 (API)。

对于简单服务,内部和外部 DTO 可能相同。在这种情况下,您可以先省略演示者,然后在需要时引入它。

按照鲍勃·马丁叔叔 Clean Architecture 文章中的确切图表,为 REST API 实施 ControllerPresenter 对我来说是困难的部分,因为架构图示例类似于网页,因此该架构用于替换 MVCMVP 模式。

但如果是 Microservice,则不需要 View componentView Model。 而且最重要的是你不能完全分开ControllerPresenter因为你需要发送响应使用您用于从微服务获取输入到控制器的相同接口到微服务。

这就是为什么我真的很努力地实现 ControllerPresenter 的完全分离。如果是Microservice或者REST API,需要做一个Presenter依赖Controller

为此,您需要在 和 Controller Component 中创建 Presenter Interface<I> 并制作 Controller 依赖于 Presenter Interface<I>,并在 Presenter Component.

中实现 Presenter Interface<I>

您实际上可以在 Robert C. Martin Clean Architecture 的书中找到此参考资料,在第 8 章 OCP:开闭原则中,在 图 8.2.