`
isiqi
  • 浏览: 16855646 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

Dependency Injection

 
阅读更多

IoC模式基本上是一个高层的概念,在 Martin Fowler 的Inversion of Control Containers and the Dependency Injection 中谈到,实现IoC有两种方式: Dependency Injection与Service Locator, Castle 所采用的是Dependency Injection 来实现 IoC,中文翻译为依赖注入,依赖注入的意义是:“保留抽象接口,让组件依赖于抽象接口,当组件要与其它实际的对象发生依赖关系时,藉过抽象接口来注入依赖的实际对象。”

看看下面这个程序:

publicclassBusinessObject{
privateFloppyWriterwriter=newFloppyWriter();
.

publicvoidSave(){

writer.SaveToFloppy();

}

}



BusinessObject 依赖于实际的 FloppyWriter,为了让 BusinessObject 获得重用性,不让 BusinessObject 直接依赖于实际的 FloppyWriter,而是依赖于抽象的接口:

publicinterfaceIDeviceWriter{
publicvoidSaveToDevice();
}


publicclassBusinessObject{
privateIDeviceWriterwriter;

publicDeviceWriter
{
Set
{
this.writer=value;
}

}


publicvoidSave(){
.
writer.SaveToDevice();
}

}


publicclassFloppyWriter:IDeviceWriter{
publicvoidSaveToDevice(){
.
//实现储存至Floppy的程序代码
}

}


publicclassUsbDiskWriter:IDeviceWriter{
publicvoidSaveToDevice(){
.
//实现储存至UsbDisk的程序代码
}

}


如果今天BusinessObject想要与UseDiskWriter对象发生依赖关系,可以这么建立: businessObject.SetDeviceWriter(new UsbDiskWriter());

由于BusinessObject依赖于抽象接口,在需要建立依赖关系时,可以通过抽象接口注入依赖的实际对象。

依赖注入在Martin Fowler的文章中谈到了三种实现方式:Interface injection、Setter injection 与 Constructor injection。并分别称其为Type 1 IoC、Type 2 IoC 与 Type 3 IoC。

上面的BusinessObject所实现的是Type 2 IoC,通过属性注入依赖关系,而Type 3 IoC,则在是构造函数上注入依赖关系,例如:

publicclassBusinessObject{
privateIDeviceWriterwriter;

publicBusinessObject(IDeviceWriterwriter){
this.writer=writer;
}


publicvoidSave(){
.
writer.SaveToDevice();
}

}
分享到:
评论

相关推荐

    Dependency Injection Principles, Practices, and Patterns

    Dependency Injection Principles, Practices, and Patterns teaches you to use DI to reduce hard-coded dependencies between application components. You'll start by learning what DI is and what types of ...

    《Dependency Injection》电子书

    ### 《Dependency Injection》电子书知识点总结 #### 一、依赖注入(Dependency Injection,简称DI)概述 **依赖注入**是一种设计模式,旨在减少代码之间的耦合度,并提高组件的可测试性和灵活性。通过将一个类所...

    Manning Dependency Injection.pdf

    依赖注入(Dependency Injection,简称DI)是一种软件设计模式,它主要解决了对象之间的耦合问题,提高了代码的可测试性和可维护性。Manning出版社的"Dependency Injection"这本书深入探讨了这个主题,它可能是由...

    IoC 容器和Dependency Injection 模式

    依赖注入(Dependency Injection,简称DI)是一种设计模式,它的核心思想是将对象之间的依赖关系反转,从而解耦各个组件,提高代码的可测试性和可维护性。IoC(Inversion of Control)通常用来描述这种模式的整体...

    Dependency Injection in .NET 无水印pdf

    Dependency Injection in .NET 英文无水印pdf pdf所有页面使用FoxitReader和PDF-XChangeViewer测试都可以打开 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者...

    Dependency Injection in .Net

    Dependency Injection (DI) is a set of related patterns and principles. It’s a way to think about and design code more than it’s a specific technology. The ultimate purpose of using DI is to create ...

    Java 9 Dependency Injection mobi

    Java 9 Dependency Injection 英文mobi 本资源转载自网络,如有侵权,请联系上传者或csdn删除 查看此书详细信息请在美国亚马逊官网搜索此书

    Java 9 Dependency Injection epub

    Java 9 Dependency Injection 英文epub 本资源转载自网络,如有侵权,请联系上传者或csdn删除 查看此书详细信息请在美国亚马逊官网搜索此书

    Java 9 Dependency Injection - Nilang Patel.pdf.zip

    Java 9 Dependency Injection - Nilang Patel Java 9 Dependency Injection - Nilang Patel Java 9 Dependency Injection - Nilang Patel

    Dependency Injection in NET

    ### 依赖注入(Dependency Injection)在.NET中的应用 #### 核心概念与定义 依赖注入(Dependency Injection,简称DI)是一种软件设计模式,主要用于降低组件之间的耦合度,提高代码的可测试性和可维护性。在.NET...

    Dependency injection in action

    标题《Dependency injection in action》所指的知识点是依赖注入的实践应用,这一概念属于软件架构设计的基本原则。依赖注入是一种编程技术,通过这种方式,对象可以不直接创建或者查找其依赖的其他对象,而是在运行...

    Java 9 Dependency Injection azw3

    Java 9 Dependency Injection 英文azw3 本资源转载自网络,如有侵权,请联系上传者或csdn删除 查看此书详细信息请在美国亚马逊官网搜索此书

    依赖注入:Dependency injection-英文书签文字版

    依赖注入(Dependency Injection,简称DI)是一种设计模式,它在软件工程中被广泛应用于构建松散耦合的系统。在Java开发中,Spring框架是最知名的实现依赖注入的库之一。本资源“依赖注入:Dependency injection-...

    Dependency Injection in .NET

    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 in Delphi.Nick Hodges.pdf

    《Dependency Injection in Delphi》这本书由 Nick Hodges 编写,深入探讨了 Delphi 应用程序开发中的依赖注入(Dependency Injection,DI)技术。依赖注入是一种设计模式,用于减少类之间的耦合度,并提高代码的可...

    Java 9 Dependency Injection_Write loosely coupled code with Spring 5 and Guice

    Java 9 Dependency Injection_Write loosely coupled code with Spring 5 and Guice-Packt Publishing(2018) Dependency Injection is a design pattern that allows us to remove the hardcoded dependencies and ...

Global site tag (gtag.js) - Google Analytics