经过一周每天 10 多个小时学习领域驱动设计后,我开始感觉自己已经开始很好地理解它了,直到今天读到这篇文章:
http://blog.fedecarg.com/2009/03/15/domain-driven-design-the-repository/ http://blog.fedecarg.com/2009/03/15/domain-driven-design-the-repository/
该文章的作者说您将存储库注入到域对象中,这对我来说没有任何意义。
我不是这个主题的专家,但我认为他是错的,但我希望这里的一些人就将存储库注入域对象是否正确或错误提供一些意见。
上周我每天阅读的所有文章,当我读另一篇文章和另一篇文章时,它们对我来说听起来都一样(这是一件好事),直到我看到上面发布的文章,这让我三思而后行,如果我的这张照片模式不正确。
您是否应该注入存储库?
显示的示例使用的是活动记录模式 http://en.wikipedia.org/wiki/Active_record_pattern。在这种模式中,一个实体知道如何拯救自己。这通常不被认为是好的关注点分离 http://en.wikipedia.org/wiki/Separation_of_concerns因为该类知道两件事:数据属性and如何坚持自己。
将存储库注入 Active Record 对象比我见过的一些 Active Record 实现更好(因为您至少可以交换存储库实现),但在我看来(以及大多数 DDD 社区),依赖关系是向后的:
存储库应该依赖于它返回的对象,而不是其他对象
绕路。这样做的原因是你的“域对象”(更多关于
稍后)可以存在(并且应该是可测试的)而无需加载或
已保存(即依赖于存储库)。
所以回答你的问题,不。您不应该将存储库注入域对象中。
然而,值得注意的是,这并不是真正的域对象,因为它没有行为 - 只是简单的获取/设置(访问器/修改器)。这只是一个数据传输对象 (DTO) http://en.wikipedia.org/wiki/Data_transfer_object。如果确实没有行为,则不需要域模型 - 它只是简单的 CRUD。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)