领略了工厂模式的强大威力,下面继续介绍更加灵活解耦的依赖注入方式,继续回到对于Animal实例化的依赖倒置环节,来看看注入方式下如何通过容器来实现实例创建过程,在此选择Unity基础容器来实现,引入Microsoft.Practices.Unity.dll程序集和Microsoft.Practices.Unity命名空间,然后就可以很容易地通过Unity容器来完成对象创建依赖关系的隔离:
class UnityCreation
{
public static void Main()
{
IUnityContainer container =new UnityContainer
container.RegisterTYpe<Animal,Dog>();
Animal dog = container.Ressolve<Animal>();
dog.show();
}
}
Unity提供了强大而灵活的依赖注入支持:方法调用注入、属性注入和构造器注入等多种方式,可以在运用时或通过配置方式来注册和获取类型,是实现处理对象建议来得有效方式。
总而言之,以对象创建这样一个常见而又简单的话题为焦点来讨论对这种依赖关系的场景复现。实际上,对象间的关系就像人类社会一样复杂多变,随时准备应对变化的依赖,着眼于抽象的把握,是把复杂简单化的最佳实践,就类似于以工厂模式或者依赖注入方式将实体对象创建简单化处理过程一样,是有意义的。