难以理解干净的架构

时间:2018-04-06 15:06:24

标签: architecture clean-architecture

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

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

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

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

2 个答案:

答案 0 :(得分:1)

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

传统分层体系结构和Clean Architecture之间的主要区别在于,到存储库的接口是由用例层而不是数据访问层拥有的。

我在How to implement Clean Architecture上开始了博客系列-也许可以帮助您将Clean Architecture付诸实践。

答案 1 :(得分:0)

查看IoC解决方案。他们真的很有可能做到这一点。通过外部化这些依赖项,您可以编写抽象(接口)代码。因此,您将编程到存储库接口,而不是数据库对象。这样调用类就不必了解存储库的详细信息。

就实际调用IoC基础结构而言,实际上通常是您正在使用的框架的一个组件,或者,在您不使用框架的情况下,UI会与它进行对话以检索使用 - 案例。