在丰富的领域模型和贫血领域模型的背景下,“模型”实际意味着什么?

时间:2014-05-28 05:08:30

标签: oop symfony model-view-controller domain-driven-design solid-principles

如果这个问题已经得到解答,请提前道歉,但我无法找到关于在这种情况下实际意味着什么模型实际意义的定义。

我听说术语模型仅用于描述持久层,所有特定于域的代码或仅仅是域实体。从我所读到的,贫血领域模型似乎被认为是一件坏事,但具体原因为什么似乎没有完全点击我,我认为这是因为我不知道什么型号指的是在这种背景下。美国这个特定的MVC?

如果它只是指实体,那么只有将逻辑放在实体中以保持数据完整性并将实际利用这些实体的逻辑放入服务类的问题是什么?这仍然被认为是贫血吗?如果是这种情况,您如何在不违反单一责任原则的情况下实际实施丰富的域模型。

答案不需要是框架或语言特定的,但如果重要,我正在使用php和Symfony2。

提前感谢任何花时间给我一些清晰度的人!

1 个答案:

答案 0 :(得分:2)

仅仅区分服务层与域层的区别,这是Martin Fowler关于Anemic Domain Models的一篇很好的文章。

他谈到的反模式是域模型缺乏域逻辑和实际上只是一个吸气剂和放大器的集合setter方法。

  

这种反模式的根本恐怖之处在于它是如此相反   面向对象设计的基本思想;这是结合数据   并一起处理。贫血领域模型实际上只是一个   程序式设计。

引用Eric Evans,他说:

  

应用层[服务层的名称]:定义作业   应该做的软件和指导表达域对象   解决问题。

     

...

     

域层(或模型层):负责表示概念   业务,有关业务情况的信息,以及   业务规则。反映业务情况的国家是   在这里控制和使用,即使存储的技术细节   它被委托给基础设施。这层是心脏的   商业软件。

     

[我的重点]

一般来说,他的博客文章很好地介绍了DDD中的一些概念。