在Clean Architecture中,UI代码在哪个层中?

时间:2016-01-19 05:06:24

标签: architecture

我正在阅读鲍勃·马丁(https://blog.8thlight.com/uncle-bob/2012/08/13/the-clean-architecture.html)阅读清洁建筑 - 我看到了与我相矛盾的事情。

该体系结构的可视化表示具有" UI"列在最外层 - 这意味着它是" Frameworks& Sons的一部分。司机",它是外部的。

然而,当他详细阐述该层的一步 - 称为接口适配器 - 他说"它是[接口适配器]层......它将完全包含GUI的MVC架构。演示者,视图和控制器都属于这里。"说接口适配器层包含视图使我觉得UI就像属于那里一样。

那么哪一层是特定于UI的代码?

2 个答案:

答案 0 :(得分:3)

因为UI有两个方面,所以会发生混淆:

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

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

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

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

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

答案 1 :(得分:0)

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

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