什么是域模型中的贫血?

时间:2012-07-10 13:11:31

标签: design-patterns language-agnostic anemic-domain-model

Martin Fowler中我可以理解,贫血意味着将业务逻辑与域对象分离,域对象被简化为琐碎的getter和setter,而域行为则转移到服务层。我想念一下吗?

如果没有任何行为,我们如何调用某个对象?能否请您提供一些非常简短的贫血领域模型代码?

1 个答案:

答案 0 :(得分:4)

由以下代码展示:

大多数代码都以域对象(例如Account或TransactionEntity)的形式处理传递数据结构(如果你愿意的话,属性包)。它们是“域对象”,主要是因为它们具有域中存在的东西的名称。

大多数逻辑都驻留在外部“服务”中 - 包含在(或单个)数据结构列表上运行的脚本。因此,服务需要访问/修改域对象的内部信息。因此域对象会自发地生成大量的getter和setter。 RIP封装。

贫血是指域类中域逻辑/行为的缺失或缺乏。

更多指标:

  • '问'方法数量超过'告诉/做'方法