知识卡片
贫血领域模型违背数据与行为封装在一起
内容
贫血模型准确说应称”贫血领域模型”(anemic domain model,Martin Fowler所创),”贫血”一词即表明其不健康:它违背了面向对象”数据与行为应封装在一起”的关键原则。DDD中,若实体或值对象除内部字段外只有一系列getter/setter,即为贫血对象。它是结构建模范式的产物,封装性弱、常导致领域服务沦为事务脚本、违背迪米特法则与信息专家模式、诱发”特性依恋”坏味道。与之相对的富领域模型(rich domain model)封装了领域逻辑,才符合OO思想,即Fowler《企业应用架构模式》定义的领域模型模式,与事务脚本、表模块并列为表达领域逻辑的三种模式。发散:按此定义,贫血领域模型因会导致事务脚本,本就不该被称为”领域模型”。
参考来源
- 位置:《解构领域驱动设计》第19章 19.1.1(源文件:_epub-src/OEBPS/032.xhtml)
- 结论依据:原文指出贫血模型违背OO封装原则,富领域模型才是Fowler定义的领域模型模式。
- 原始内容:它违背了面向对象设计的关键原则,即"数据与行为应该封装在一起"。