结合模型或实体



我在分开关注方面有一个可靠的问题。在典型的三层体系结构(模型,视图,演示者)中,我们正在以干净的体系结构方法(Bob叔叔)处理问题,模型/数据的组合方式是什么?这是一个典型的例子。桌子铅笔不容纳信息是否已共享,该信息存储在另一个表中 - 例如,PencilProperties。然后,当我创建域模型-PencilModel时 - 设置其" ISSHARED"字段的正确方法是什么?

我正在使用仅通过数据映射类别的PencildatabaseObject和PencilModel映射数据的存储库。

另一个例子是,我们有两个对象:

Plant
 -> id
 -> name
Tree
 -> id
 -> plant_id
 -> plant_name

我需要在植物和树之间进行映射,以便树从植物实体中获取特性?此时访问数据映射器中的数据库似乎是错误的。

预先感谢。

因此,在这两种情况下,PencilPencilPropertiesPlantTree都是您的数据实体。您的存储库应负责获取数据。您的存储库是数据库,ORM还是字典都无关紧要。唯一重要的是您要实施它的方式。

(请原谅C#LINQ,但与Java足够接近)因此,对于实施,您可以让存储库简单地获取ISSHARED作为:

var pencilIsShared = _pencilRepository.First().IsShared;

至于您需要映射时,简单的答案是"在您的存储库中"

由于您的PencilPencilRepository更改的可能性较小,因此您需要倒置依赖项并确保您具有PencilRepository接口,并且您的PencilRepositoryImpl实现将是返回您是否共享Pencil的实现。

对于您担心访问数据映射器中数据库的关注,您可以做的是将映射器逻辑包括在存储库中,然后抽象映射器,以便您不再违反SRP。请参阅下面的链接。

存储库模式

这个非常干净:https://medium.com/@krzychukosobudzki/repository-design-pattern-bc490b256006

最新更新