0

我对干净架构的架构概念比较陌生。不幸的是,我有一些理解问题:

我理解这个概念,你应该遵循规则,没有内层可以知道外层的任何信息,你只能通过边界接口调用外层。

现在让我们做一个简单的思想实验,其中用户输入持久存储的数据:您有一个 UI(Webform、Console 等)并且用户输入数据。在一个事件(例如提交)之后,控制器调用一个用例(比如“PersistentStoreData”),我们向下工作到实体级别。我有点理解这一点。但是假设我们要将数据存储到数据库中。解耦规则说,内层的任何实体、用例或任何东西都不能知道外层的任何信息。只能通过接口进行调用。但是有一次必须有一个实例化的对象,它具有处理数据库请求的业务逻辑,并且您肯定不能实例化接口。哪个组件实例化了这个“数据库对象”?由于依赖规则,不是内层。唯一的其他组件是 UI,但这对我来说毫无意义。为什么 UI 应该知道有关数据库的任何信息?

也许是一个愚蠢的问题,但我无法理解这个问题。

4

2 回答 2

1

您想要查看的关键模式是“存储库模式”和“工作单元”模式。

传统分层架构和清洁架构之间的主要区别在于存储库的接口由用例层而不是数据访问层拥有。

我开始了一个关于如何实施清洁架构的博客系列——也许这有助于你将清洁架构付诸实践。

于 2019-02-03T19:52:57.177 回答
0

看看IoC解决方案。他们真的使很多事情成为可能。通过将这些依赖关系外部化,您可以对抽象(接口)进行编码。因此,您可以对存储库接口进行编程,而不是数据库对象。这样调用类就不必知道存储库的详细信息。

至于实际调用 IoC 基础设施的内容,实际上通常是您正在使用的框架的一个组件,或者,在您不使用框架的情况下,UI 与其对话以检索用例。

于 2018-04-06T15:48:16.847 回答