最近在研究依赖注入(inject)设计模式。
class User
{
private $db;
public function __construct(Database $db)
{
$this->$db = $db;
}
}
我不禁想知道这是否是我在聚合中学到的相同的东西。如果我错了,请纠正我。我知道目标依赖注入(inject)和聚合是不同的。有什么我想念的吗?
最佳答案
聚合是对象组合的一种形式。它与依赖注入(inject)无关。
另一方面,依赖注入(inject) 不是关于对象如何关联,而是如何将其他对象(依赖项)获取到特定对象中。 依赖项可以是聚合、服务、存储库、验证器、文字...
通常,在强类型语言中,依赖性 被引入为接口(interface)以避免将您的对象耦合到实现细节。另一方面,在动态类型语言中,约定和强大的文档可以构建良好且紧密耦合的依赖关系图。
请注意,数据库不能是聚合。并非所有关联都被视为聚合,但您可以考虑注入(inject)依赖。
无论如何,您的推理中有一些设计味道:用户不应该依赖数据库,但如果您要实现,数据层/数据映射层将是注入(inject)到您的用户实体中的更好候选者类似 active record pattern 的东西.
关于php - 聚合和依赖注入(inject)的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41765798/