MVC域模型中实体之间的关系

时间:2018-07-16 12:35:40

标签: oop design-patterns model-view-controller orm model

我有一个Web MVC应用程序,该应用程序由彼此分隔的三层组成:

  • UI层:由控制器,演示者,视图等组成;
  • 域模型:包含实体(域对象)和数据库抽象(存储库接口-如Separated Interfaces的层),
  • 持久层:由存储库实现组成-如Gateways

Martin Fowler在对Domain Model的定义中说:

  

域模型创建了一个由相互连接的对象组成的网络,其中每个对象代表一个有意义的个体[...]。

他还在描述之前在图片中提供了一个数据库。

个人而言,因为在我的持久层中,我没有使用任何ORM,ActiveRecord或类似的实现,所以我无法想象我需要在实体与数据库结构之间进行某种类型的关系映射-包括此处的数据库表。

但是,我仍然需要在实体之间构建任何关系吗?换句话说,我是否需要将它们互连,例如:一个Question实体包含Comment实体的列表

如果是,请您向我解释一下,这种“互连性”的目的是什么?应该是什么?

谢谢您的时间。

编辑:

一个新思路:实体包含行为,这些行为在其封装的数据上执行。这种行为仅与他们自己的数据有关,使我想到:如果Question实体包含Comment实体的列表,则有什么意义? {1}}仅与自身有关?我可能会丢失一些东西吗?

1 个答案:

答案 0 :(得分:1)

“互连性”提供了一种在基于代码的模型中表达真实事物之间关系真实性的方法。一旦建立了这些关系,并且做得很好,该模型就可以自我记录并可以直观地使用。此外,可以通过代码控制关系和相关数据,从而保护模型状态并提供有关此状态的反馈。

如果直接在简单对象之间读写数据,则此方法可能会过于复杂且不必要。值得牢记的是,如果这是您的解决方案的架构方式,那么您实际上就没有域模型。您只有一个命令/查询层和一些DTO。