(转)Unity(二):Unity是什么?
原文地址:http://www.cnblogs.com/kebixisimba/archive/2008/03/25/1121155.html
在之前的 Unity(一):从ObjectBuilder说起 一文中,介绍了Unity的底层框架ObjcetBuilder。同时我稍微也提了一句:他们(patterns & practices)再次犯了拖期的老毛病(说句公道话,这个毛病当属其中的Enterprise Library团队最为突出)。没想到,今天看到Unity的掌门Grigori说:Unity release date is moved to April 7。又有得等了:)
实在不想针对目前的不稳定版本做介绍,主要是看到3月12号的版本比一个月前的CTP有了很大的改动,怕了!不想等正式版出来之后,目前的介绍中的代码编译一下n多错误——如果不彻头彻尾的改一遍的话。这里有篇文章介绍了这两个版本之间的改动:IoC Container, Unity and Breaking Changes Galore。Huh!之前TerryLee也有一篇介绍的文章:依赖注入容器Unity Application Block(1):快速入门,是针对2月的CTP的,嗯,没错,他的示例代码中用到的API现在都变了...
不过,在这个时候做一些总体性的介绍还是合适的,毕竟大的方向已经不会变的。嗯,至少我是这么想的...
Unity是什么?
Unity是patterns & practices团队开发的一个轻量级、可扩展的依赖注入容器,具有如下的特性:
1. 它提供了创建(或者装配)对象实例的机制,而这些对象实例可能还包含了其它被依赖的对象实例。
2. Unity允许将预先配置的对象注入到类中,实现了inversion of control (IoC)的功能。在Unity中,支持constructor injection(构造器注入), property setter injection(属性设值注入)以及method call injection(方法注入)。ps:这里的方法注入与Martin Fowler定义的接口注入类似而稍有区别。
3. 支持容器的体系结构。一个容器可以有子容器,允许从子容器到父容器的对象定位查询。
4. 可以通过配置文件进行准备和配置容器。
5. 不会影响到类的定义(属性设值注入和方法注入除外),这也是轻量级容器的一个体现。
6. 支持自定义的容器扩展。