我正在阅读 Bob Martin 的 Clean Architecture ( https://blog.8thlight.com/uncle-bob/2012/08/13/the-clean-architecture.html ) - 我看到了似乎矛盾的地方对我来说。
架构的可视化表示在最外层列出了“UI”——这意味着它是“框架和驱动程序”的一部分,它是外部的。
然而,当他详细阐述从那一层开始的一步时 - 称为接口适配器 - 他说“它是 [接口适配器] 层......将完全包含 GUI 的 MVC 架构。演示者、视图、和控制器都属于这里。” 说接口适配器层包含视图让我觉得 UI 属于那里。
那么哪一层是用来存放 UI 特定代码的呢?
混淆的发生是因为 UI 有两个方面:
一个是 UI 的具体“物理”方面,它特定于某个操作系统或交付机制(例如 Web)。UI 的这一部分与如何向用户显示事物以及如何捕获用户操作有关。
UI 的另一部分涉及向用户显示什么以及要收听的用户操作。
鲍勃叔叔有效地区分了 HOW 和 WHAT。
UI 的 WHAT 方面属于“接口适配器”层。您在那里生成的视图决定了您向用户显示的信息。
HOW 方面属于“Frameworks & Drivers”层。目标是如果你想为你的用户提供两种用户体验——一个网络应用程序和一个移动应用程序——你只需要编写两个版本的外层,而内层不需要改变,或者只需要编写需要稍微改变一下。