写在前面:控制反转(Inversion of Control,IoC)是当前比较流行的技术,是研究的热点和使用的热点。使用这些模式的容器有PicoContainer、Spring和Castle等等,而Castle是.Net平台下使用最多的轻量级容器,Spring也有.Net版本的容器,不过不是很常用。而PicoContainer和Spring容器在java平台上的使用是比较流行。
所谓的控件反转与依赖注入
关于IoC,其实有三个名词,轻量级容器,控制反转和注入依赖,规范地说,轻量级容器就是一个容器,而控制反转是一个模式,而注入依赖是一个技术,但是,你不需要认真分开这些内容,你可以使用IoC来称呼这一切,其根本的思想是把服务配置与使用分开。也就是说,不同团队做出来的服务或组件,团队之间互相不了解,他们的协作通常是比较困难的。而使用IoC容器,你可以将组件都放入到容器中,组件之间的通讯通过IoC进行,组件只需要声明自己的接口和提供的属性,而不需要知道使用者的使用方法。
实际的使用
可以将IoC容器放在内核的部分,在程序的启动过程中就加载主要的服务,而调用的时候,就指定一个Key,容器根据Key创建对象,并调用。在加载服务名称的时候,是不初始化对象的,而只在调用的时候才创建对象。在Castle这个IoC容器中,笔者知道它可以设计很多的启动设施,这些设施有多种类型,有:当程序满足依赖关系时,自动启动程序;根据不同类型的对象启用;等等。反正,你可以将设施当作是windowHook,也就是一个捕捉所有关系的服务。
使用反射与IoC容器
如果只是为了使用对象的容器,在需要的时候使用一个Key来加载对象,你完全可以使用反射机制,这个Key对应一个对象,并且对象与Key的映射是放在配置文件中。这完全可以实现你的需求。
但是,如果要系统地配置启动参数,设置对象的生命周期,设置对象的启动选项(设施),那么,你就要使用更加健全的机制,Castle提供了这方面的帮助。
其实,要实现IoC,不是一定要使用容器的,你只要实现了服务配置和使用分开的思想,实现了服务调用配置,你自己也可以做一个IoC的服务。
出处:小作坊网ChakMan原创
添加到百度搜藏
添加到雅虎收藏