贫血域模型和活动记录之间的区别

Posted

技术标签:

【中文标题】贫血域模型和活动记录之间的区别【英文标题】:difference between anemic domain model and active record 【发布时间】:2014-04-19 16:47:12 【问题描述】:

基于this 的回答,我发现贫血领域模型背后的相同想法正在积极记录中! 在活动记录模式中,数据库字段与域属性相同(如果我错了,请纠正我),所以根据我之前提到的答案,我们在贫血模型中也有相同的(很容易从数据库表中自动生成),那又如何这两种方法有什么区别? 谢谢

【问题讨论】:

您对贫血域模型的定义缺陷是不对的。自动方面是次要的。 ADM 的问题在于它没有业务逻辑,即没有方法,活动记录类可能会犯错,但它不是模式定义的隐含部分。活动记录可能具有处理数据库存储和检索之外的数据的方法。 【参考方案1】:

这是 Martin Fowler 的企业应用架构模式中对 Active Record 的官方一句话定义:

“在数据库表或视图中包装一行的对象,封装数据库访问,并在该数据上添加域逻辑。” (强调我的)

请注意,我加粗的定义的最后一部分。由于 Active Record 应该为类添加额外的域逻辑,所以它不会乏力。

【讨论】:

以上是关于贫血域模型和活动记录之间的区别的主要内容,如果未能解决你的问题,请参考以下文章

贫血领域模型与领域模型

什么是领域模型(domain model)?贫血模型(anaemic domain model) 和充血模型(rich domain model)有什么区别

贫血模型跟充血模型-摘录

领域模型贫血模型充血模型概念总结

DDD领域模型贫血模型充血模型概念总结

DDD领域模型贫血模型充血模型概念总结