PHP-您是否将存储库注入域对象?
作者:互联网
在一天学习10个星期之后,经过一周的学习,我开始感觉自己开始非常了解它,直到今天阅读本文为止:
http://blog.fedecarg.com/2009/03/15/domain-driven-design-the-repository/
该文章的作者说您将存储库注入到Domain对象中,这对我来说没有任何意义.
我不是这个主题的专家,但是我认为他是错的,但是我希望这里的一些人提供一些关于将存储库注入域对象是对还是错的意见.
在我阅读另一篇文章和另一篇文章时,我每天的所有阅读都对我来说听起来是一样的(这是一件好事),直到我看到上面发布的文章,如果我对这张照片的了解,我会三思而行.模式不正确.
您是不是应该注入存储库?
解决方法:
所示示例使用的是Active Record pattern.在这种模式下,实体知道如何保存自己.通常认为这不是很好的Separation of Concerns,因为该类知道两件事:数据属性和如何持久保存自身.
将存储库注入Active Record对象比我见过的某些Active Record实现要好(因为您至少可以换出存储库实现),但是在我看来(和大多数DDD社区),依赖关系是倒退的:
The repository should depend on the object it returns, not the other
way around. The reason for this is that your “domain object” (more on
that later) can exist (and should be testable) without being loaded or
saved (that is, having a dependency on a repository).
因此,回答您的问题,不.您不应该将存储库注入域对象.
但是,值得注意的是,这实际上不是域对象,因为它没有行为-仅是简单的获取/设置(访问器/更改器).它只是一个Data Transfer Object (DTO).如果实际上没有任何行为,则您不需要域模型-只是简单的CRUD.
标签:oop,domain-driven-design,repository,php 来源: https://codeday.me/bug/20191031/1975716.html