65.9K
CodeProject 正在变化。 阅读更多。
Home

依赖注入模式( 松散耦合)

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.82/5 (6投票s)

2008年5月1日

CPOL

2分钟阅读

viewsIcon

41305

downloadIcon

447

依赖注入模式描述

问题(对象依赖)

当一个对象 ‘x’ 使用另一个对象 ‘y’ 时,我们说 ‘x’ 依赖于 ‘y’。对象依赖成为一个问题,当对象 ‘x’ 需要动态地使用另一个对象 ‘z’,而不是 ‘y’ 时。 强依赖将对象(数据)和关系(逻辑)混合在一个地方,导致紧耦合,使得代码更难修改和调整。

解决方案(松耦合)

真正的解决方案是实现松耦合模式,例如依赖注入。 确实,依赖注入允许对象相互关联,但通过接口,以便对象 ‘x’ 使用接口 ‘i’,而 ‘y’ 和 ‘z’ 都实现接口 ‘i’。 这种方法允许隔离对象的实现、创建和逻辑依赖关系。

优点与缺点

优点

  1. 松耦合
  2. 集中式配置

缺点

  1. 添加额外的代码来处理关系
  2. 当实例过多时,将对象链接在一起本身会成为一种开销

示例

农场投资顾问 Winform 建议根据农场饲养的动物数量和类型,所需的投资金额。 我为我的奶奶 “Rquia” 做的,因为她有一个小农场,非常喜欢奶牛和绵羊。 献上我深深的祝福!

Example.JPG

实现

该代码包含三个使用依赖注入的示例:

1) 构造函数

使用构造函数是一种好的方法。 它在对象创建时完成所有操作,但一旦设置了依赖关系,就无法更改它。 更灵活的方法是使用 setter。

DIConstructor.JPG

2) Setter

Setter 在动态设置依赖关系方面非常灵活,但为了进一步松耦合,最好完全通过接口处理关系。 因此,不是 ‘x’ 依赖于 ‘i’,而是 ‘ix’,即 ‘x’ 实现的接口依赖于 ‘i’,因此我们可以从两端更改依赖关系。 这不再是类依赖于接口,而是接口依赖于接口。 这种“高度松耦合”可以通过接口依赖注入来实现。

sertterConstructor.JPG

3) 接口

在这种情况下,一个接口依赖于另一个接口,这使得对象之间没有任何逻辑关系。

DIInterface.JPG

历史

  • 2008年5月1日:初始发布
© . All rights reserved.