先概括Dependency Injection也就是依赖注入:一种设计模式,当类设计中使用到某种其它的类或插件类时,是通过对象引用而不是直接创建对象来实现的,在声明的时候,只需确定接口或者基类就可以了。
引用概念提出者martin fowler的原图,在一种设计模式下,一个类可以在类的定义里面去创建和使用另一个类,例如:
这里MovieLister类创建了MovieFinderImpl类,而MovieFinderImpl类实现了MovieFinder的接口。这种情况下,如果MovieLister如果要使用其他实现MovieFinder接口的类,就不得不改变创建对象的实现。比如,原来是new MovieFinderImpl_1(),现在是new MovieFinderImpl_2()。
而依赖注入的设计方法引入了一个“注入点”的概念,把依赖关系独立到另外的部分,而不是MovieLister本身的实现中来做,MoviewLister这个类不需要关心最终使用的是哪个MovieFinder的实现类。依赖注入的关系图如下:
在上面的图里面,我们可以看到,我们只规定MovieLister依赖于MovieFinder,而具体有哪些对MovieFinder的实现类,我们并不关心。具体的对象创建和传入都是由Assembler来处理的。这样一来,我们可以保证MovieLister本身对于MovieFinder扩展时表现的可扩展性。
在广义上,Dependency Injection也是Inversion of Control(IoC)的一种。Dependency Injection在查找/使用插件类的时候,控制反转了,一般的模式(第一幅图)是MovieLister进行控制,而依赖注入模式下,是由Assembler进行控制,相对于MovieLister来说,控制方向变化了。
有两篇关于依赖注入的文章写得比较好,一篇是martin fowler的原文,另一篇是中文的,例子写得也比较好。
1. http://www.cnblogs.com/leoo2sk/archive/2009/06/17/1504693.html
2. http://www.martinfowler.com/articles/injection.html
分享到:
相关推荐
#### 一、依赖注入(Dependency Injection,简称DI)概述 **依赖注入**是一种设计模式,旨在减少代码之间的耦合度,并提高组件的可测试性和灵活性。通过将一个类所依赖的对象外部传入而非在内部创建,实现了对象间...
依赖注入(Dependency Injection,简称DI)是一种设计模式,它在软件工程中被广泛应用于构建松散耦合的系统。在Java开发中,Spring框架是最知名的实现依赖注入的库之一。本资源“依赖注入:Dependency injection-...
依赖注入(Dependency Injection,简称DI)是一种软件设计模式,它主要解决了对象之间的耦合问题,提高了代码的可测试性和可维护性。Manning出版社的"Dependency Injection"这本书深入探讨了这个主题,它可能是由...
### 依赖注入(Dependency Injection)在.NET中的应用 #### 核心概念与定义 依赖注入(Dependency Injection,简称DI)是一种软件设计模式,主要用于降低组件之间的耦合度,提高代码的可测试性和可维护性。在.NET...
标题《Dependency injection in action》所指的知识点是依赖注入的实践应用,这一概念属于软件架构设计的基本原则。依赖注入是一种编程技术,通过这种方式,对象可以不直接创建或者查找其依赖的其他对象,而是在运行...
《Dependency Injection in Delphi》这本书由 Nick Hodges 编写,深入探讨了 Delphi 应用程序开发中的依赖注入(Dependency Injection,DI)技术。依赖注入是一种设计模式,用于减少类之间的耦合度,并提高代码的可...
#### 二、Dependency Injection(依赖注入)模式 依赖注入(DI)是一种设计模式,它实现了 IoC 的思想。在 DI 中,组件不再直接创建其所依赖的对象,而是将这些依赖作为参数传递进来。这种方式有多种实现形式: 1....
### 依赖注入(Dependency Injection)在 .NET 中的应用 #### 一、依赖注入概念与重要性 依赖注入(Dependency Injection,简称 DI)是一种设计模式,主要用于实现对象之间的解耦,提高代码的可测试性和可维护性。...
标题《AngularJS中的依赖注入》指向的知识点,聚焦于AngularJS框架中一种特定的软件设计模式——依赖注入(DI)。依赖注入是一种编程技术,允许我们通过外部方式而非硬编码来管理对象间的依赖关系。这意味着对象的...
依赖注入(Dependency Injection,简称DI)是一种设计模式,用于实现软件模块间的解耦合。在.NET Core 2.0中,依赖注入是通过内置的服务容器来实现的,这种容器可以管理应用程序中的依赖关系和服务实例化。 #### 二...
AngularJS的依赖注入(Dependency Injection,简称DI)是一种软件设计模式,用于管理应用程序中的对象如何获取它们所需的依赖。依赖注入的主要目标是降低组件之间的耦合,使得代码更加灵活、可测试和可维护。 1. ...
Summary Dependency Injection in .NET presents core DI patterns in plain C#, so you'll fully understand how DI works, covers integration with standard Microsoft technologies like ASP.NET MVC, and ...
本文将深入探讨这一模式的工作原理,并特别关注依赖注入(Dependency Injection, DI)这一更为具体的形式。此外,我们还将对比依赖注入与服务定位器(Service Locator)模式,并讨论选择两者之间的权衡。 #### 组件和...
综上所述,《Dependency Injection in .NET》是一本关于.NET环境下依赖注入的全面指南,它不仅涵盖了依赖注入的基本概念和实践,还深入探讨了.NET平台下依赖注入的最佳实践、设计模式以及如何选择和使用依赖注入容器...