我正在决定是否应该使用丰富域模型而不是贫乏域模型,并寻找两者的好例子。
我一直在使用贫血领域模型构建 Web 应用程序,并由服务-->存储库-->存储层系统,使用流利验证用于BL验证,并将我所有的BL放在Service层中。
我读过 Eric Evan 的 DDD 书,他(以及 Fowler 和其他人)似乎认为贫血领域模型是一种反模式。
所以我真的很想深入了解这个问题。
另外,我真的在寻找丰富域模型的一些好的(基本)示例,以及它提供的相对于贫血域模型的好处。
不同之处在于贫血模型将逻辑与数据分开。逻辑通常放置在名为的类中**Service
, **Util
, **Manager
, **Helper
等等。这些类实现数据解释逻辑,因此将数据模型作为参数。例如。
public BigDecimal calculateTotal(Order order){
...
}
而富域方法则通过将数据解释逻辑放入富域模型中来逆转这一点。因此,它将逻辑和数据放在一起,丰富的领域模型将如下所示:
order.getTotal();
这对对象的一致性有很大的影响。由于数据解释逻辑包装了数据(数据只能通过对象方法访问),因此方法可以对其他数据的状态变化做出反应 -> 这就是我们所说的行为。
在贫血模型中,数据模型无法保证它们处于合法状态,而在富域模型中则可以。丰富的领域模型应用面向对象的原则,例如封装、信息隐藏以及将数据和逻辑结合在一起,因此从面向对象的角度来看,贫血模型是一种反模式。
如需更深入的了解,请查看我的博客https://www.link-intersystems.com/blog/2011/10/01/anemic-vs-rich-domain-models/ https://www.link-intersystems.com/blog/2011/10/01/anemic-vs-rich-domain-models/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)