贫血数据模型(ADM Vs RDM)

时间:2012-03-18 11:39:44

标签: domain-driven-design design-patterns anemic-domain-model

我正在尝试理解ADM和RDM之间的差异。

我看到的方式是adM和RDM讨论都归结为实际确定工作流程的位置(对象协作)。 RDM将数据存储库对象和验证对象注入业务对象(模型)的构造函数中。然后,业务对象方法定义使这些对象协作的工作流程。

ADM将所有这些协作对象(模型,存储库,验证对象)传递到viewModel / controller等.viewmodel / controller的方法定义了对象之间的工作流协作。

这是正确的还是我错过了一些更基本的东西?

1 个答案:

答案 0 :(得分:3)

我假设RDM = Rich Domain Model。 ADM和RDM(实际上是'真正的'域模型)之间的主要区别在于RDM将业务流程(应用程序开发的问题和解决方案)建模为尽可能天然的有机。

域模型模拟业务行为,而贫血模型基本上由POCO组成,它们保存数据,基本上模仿数据库表。然后,这些POCO几乎以程序的方式使用,由服务验证和处理(在许多情况下只是静态方法)。

简而言之,ADM包含的对象不包含(或非常少)行为,它们仅作为数据包,而RDM则尽可能准确,自然地对业务流程进行建模。大多数情况下,贫血领域是以数据库为中心的方法的结果,在这种方法中,一切都以数据库开始和围绕着。

控制器,视图和DI容器只是实现细节。