php - 聚合和依赖注入(inject)的区别

标签 php oop design-patterns dependency-injection aggregation

最近在研究依赖注入(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/

相关文章:

java - 以不同方式呈现信息的模式

C++模板化接口(interface)

c++ - 如何降低库中的复杂性而不增加其他地方的复杂性?

java - 这是工厂模式的正确用法吗?

php - 传单标记弹出文本中的换行符

php - Google App Engine Cloud SQL 上的 SQL 语法错误

PHP - 如何从数组中获取最后一个元素之前的元素?

php - SQL 更新 id = 1 的行

oop - 如何验证给定域的类图?

java - 叶节点中具有自定义操作的复合模式