1

根据我从Martin Fowler的理解,贫血意味着将业务逻辑与领域对象分离,这些对象被简化为琐碎的 getter 和 setter,而领域行为则被移至服务层。我错过了什么吗?

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

4

1 回答 1

4

它通过代码展示,其中:

大多数代码以域对象(例如 Account 或 TransactionEntity)的名义处理传递数据结构(如果您愿意,可以使用属性包)。它们是“域对象”,主要是因为它们具有域中存在的事物的名称。

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

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

更多指标:

  • “询问”方法的数量超过“告诉/执行”方法
于 2012-07-10T13:17:52.047 回答