gpt4 book ai didi

php - 您是否将存储库注入(inject)域对象?

转载 作者:可可西里 更新时间:2023-11-01 01:04:35 25 4
gpt4 key购买 nike

在每天学习 10 多个小时的领域驱动设计一周之后,我开始觉得我已经开始很好地理解它了,直到我今天读了这篇文章:

http://blog.fedecarg.com/2009/03/15/domain-driven-design-the-repository/

那篇文章的作者说你将 Repository 注入(inject)到 Domain 对象中,这对我来说没有任何意义。

我不是这方面的专家,但我认为他是错的,但我想听听这里的一些人关于将存储库注入(inject)域对象是对还是错的一些意见。

在我上周阅读的所有内容中,每天阅读另一篇文章和另一篇文章对我来说都是一样的(这是一件好事),直到我看到上面发布的文章,这让我三思而后行,如果我此图案的图片不正确。

您是否应该注入(inject)存储库?

最佳答案

显示的示例使用 Active Record pattern .在这种模式中,实体知道如何保存自己。这一般不认为好Separation of Concerns因为该类知道两件事:数据属性如何保持自身。

将存储库注入(inject) 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).

所以回答你的问题,不。您不应该将存储库注入(inject)域对象。

但是,值得注意的是,这并不是真正的域对象,因为它没有行为——只是简单的获取/设置(访问器/修改器)。这只是一个 Data Transfer Object (DTO) .如果确实没有行为,则不需要域模型 - 它只是简单的 CRUD。

关于php - 您是否将存储库注入(inject)域对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14175931/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com