首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关联注入还是依赖注入?

关联注入还是依赖注入?
EN

Stack Overflow用户
提问于 2018-01-05 16:32:24
回答 2查看 571关注 0票数 5

我在研究依赖注入模式。我读过许多示例,其中一个典型的示例是使用XxxService/XxxRepository作为示例。但是在我看来,根据XxxRepository的概念,类XxxService应该是类XxxService的一个关联。为什么不将这种情况称为关联注入,但仍然是依赖注入?:)

谢谢!

2018年1/26更新

目前,我认为dependency injection的概念适合于这个问题中描述的情况。因为关联只是UML中一个特殊的依赖项

请参阅这篇文章,Martin说:

“如果对一个元素(供应商)的定义的更改可能导致另一个元素(客户端)的更改,则两个元素之间存在依赖关系”。这是一种非常模糊和普遍的关系,这就是为什么UML对于不同形式的依赖有大量的原型。

关联也意味着依赖,如果两个类之间存在关联,则也存在依赖关系。

所以我现在不能接受任何答案。或者这个问题不是一个好问题,因为每个开发人员都有自己的观点。我正认真考虑结束这个问题。

EN

回答 2

Stack Overflow用户

发布于 2018-01-05 16:39:24

因为依赖注入是为编码而定义的,而不是为设计定义的。

您可以使用或不使用注入来编写关联代码,但它是关联。

例如,在Java中,以下代码显示了类库A与B类实现接口IB之间的关联。

代码语言:javascript
复制
 `class A{     @Inject     private IB b;     ...     }` 

代码语言:javascript
复制
  `Class A{     private IB b = new B();     ...    }`
票数 1
EN

Stack Overflow用户

发布于 2018-01-06 00:21:58

,首先,:我想澄清一些关于依赖注入的提示。

在依赖注入中(参见参考文献 (第4段)):

  • 客户端不需要知道如何构造服务。
  • 客户端不需要知道它正在使用的实际服务
  • 客户机只需要了解服务的内部接口,因为这些接口定义了客户机如何使用服务。

当我们使用依赖项注入时,如下代码所示:

代码语言:javascript
复制
class A {
    @Inject
    private IB b;

    //...
}

我们实际上不知道哪个类的对象(实现IB)被注入到b中。

可能注入的类在运行时会发生变化,可能是由于一些手动或自动处理的配置而改变的。也许它会随着时间的推移而动态变化等等。

因此,我们不能使用类A和其他类之间的关联(哪个类?还是哪个物体?)

因此,,类A和接口IB之间只有依赖关系。

在小型项目中,也许我们的项目中只有一个IB的实现。或者我们没有任何机制来进行动态注射。在这种情况下,可以使用关联。但是,在这种情况下,不需要依赖注入。

要从Martin那里找到好的解释和好的示例,请参阅参考文献2

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48117639

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档