贫血域模型和活动记录之间的区别
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)有什么区别