【问题标题】:In Clean Architecture, in which layer does UI code go?在 Clean Architecture 中,UI 代码在哪一层?
【发布时间】:2016-04-24 10:58:17
【问题描述】:

我正在阅读 Bob Martin (https://blog.8thlight.com/uncle-bob/2012/08/13/the-clean-architecture.html) 的 Clean Architecture 文章,我发现这对我来说似乎很矛盾。

架构的视觉表示在最外层列出了“UI” - 这意味着它是“框架和驱动程序”的一部分,它是外部的。

然而,当他详细阐述从那一层开始的一层——称为接口适配器——时,他说“它是 [接口适配器] 层......它将完全包含 GUI 的 MVC 架构。演示者、视图和控制器都属于这里。”说接口适配器层包含视图让我觉得 UI 属于那里。

那么哪一层是用来存放特定于 UI 的代码的呢?

【问题讨论】:

    标签: architecture


    【解决方案1】:

    这种混乱的发生是因为 UI 有两个方面:

    一个是 UI 的具体“物理”方面,它特定于某个操作系统或交付机制(例如 Web)。这部分 UI 涉及如何向用户显示事物,以及如何捕获用户操作。

    UI 的另一部分涉及向用户显示什么以及要收听什么用户操作。

    Uncle Bob 有效地将 HOW 和 WHAT 分开。

    UI 的 WHAT 方面属于“接口适配器”层。您在那里生成的视图决定了您向用户显示的信息。

    HOW 方面属于“框架和驱动程序”层。目标是,如果您想为您的用户提供两种用户体验 - 一个 Web 应用程序和一个移动应用程序 - 您只需要编写外层的两个版本,但内层不需要更改,或者只需需要稍微改变一下。

    【讨论】:

    • 非常感谢。我必须写下 100 个依赖关系图,试图从他的博客中找出 UI 和 View 之间的分离属于哪里。
    【解决方案2】:

    我认为这与区分间接层相比并不矛盾。 Interface Adapters 用于将内部表示转换为外部表示,但外部表示需要与 Framework 和 Drivers 层交互。因此,虽然与 MVC 框架交互的应用程序代码位于接口适配器层,但它调用的 API 和呈现发生在框架和驱动程序层。

    因此,建议不要将这些问题混在一起,这样可以更容易地独立于框架进行测试和发展。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-12-24
      • 2020-06-18
      • 2018-01-03
      • 2020-10-01
      • 2022-05-06
      • 2019-06-20
      • 2021-06-15
      相关资源
      最近更新 更多