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






2.82/5 (6投票s)
依赖注入模式描述
问题(对象依赖)
当一个对象 ‘x’ 使用另一个对象 ‘y’ 时,我们说 ‘x’ 依赖于 ‘y’。对象依赖成为一个问题,当对象 ‘x’ 需要动态地使用另一个对象 ‘z’,而不是 ‘y’ 时。 强依赖将对象(数据)和关系(逻辑)混合在一个地方,导致紧耦合,使得代码更难修改和调整。
解决方案(松耦合)
真正的解决方案是实现松耦合模式,例如依赖注入。 确实,依赖注入允许对象相互关联,但通过接口,以便对象 ‘x’ 使用接口 ‘i’,而 ‘y’ 和 ‘z’ 都实现接口 ‘i’。 这种方法允许隔离对象的实现、创建和逻辑依赖关系。
优点与缺点
优点
- 松耦合
- 集中式配置
缺点
- 添加额外的代码来处理关系
- 当实例过多时,将对象链接在一起本身会成为一种开销
示例
农场投资顾问 Winform 建议根据农场饲养的动物数量和类型,所需的投资金额。 我为我的奶奶 “Rquia” 做的,因为她有一个小农场,非常喜欢奶牛和绵羊。 献上我深深的祝福!

实现
该代码包含三个使用依赖注入的示例:
1) 构造函数
使用构造函数是一种好的方法。 它在对象创建时完成所有操作,但一旦设置了依赖关系,就无法更改它。 更灵活的方法是使用 setter。

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

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

历史
- 2008年5月1日:初始发布