首页 > 解决方案 > 清洁架构:内存实体的哪一层?

问题描述

考虑到鲍勃叔叔的清洁架构的不同层,我有一个问题:如果您将数据存储在数据库中,这显然是一个细节,因此数据库进入了外层(框架和驱动程序)。然而,描述该数据库中数据的实体是我的应用程序的核心信息,因此它们位于最内层(实体)。

现在假设我必须在应用程序启动时获取所有数据。然后有一些计算在开始时只需要一次,但这有点耗时。所以不可能一直从数据库中获取数据。因此,该应用程序使用该数据的内存表示。

我的问题是你会把这个内存表示放在哪里?一方面,它只不过是像数据库这样的细节,因此位于最外层。另一方面,它准确地代表了具有更多信息的实体 - 但最终它只是一个普通旧对象的列表。这会推荐核心层,不是吗?

就我个人而言,我倾向于使用第一个选项并像处理另一个数据源一样处理它 - 作为一个细节。

亲切的问候,蒂耶里

标签: clean-architecture

解决方案


它仍然是一个细节,应该保留在外圈。如果您考虑存储库模式,那么实现是在内存中还是访问 SQL 数据库都没有关系。它仍然是您希望与业务逻辑保持分离的细节,以便您可以随时轻松更改它。


推荐阅读