我可以使用工厂来实现依赖注入

有人告诉我,在依赖注入框架出现之前,开发人员会使用工厂来实现DI。 任何人都可以提供一个工厂模式如何用于DI的例子。 我的意思是,仅仅考虑一个工厂是一个依赖注入器,但我无法在网上找到任何例子。


这关闭了我的头顶,未经测试的代码(使用C#)

public class CarFactory : ICarFactory{

   private static CarFactory instance = null;

   public static ICarFactory SingletonInstance {
       get {
            if (this.instance == null){
                 this.instance = new CarFactory();
                 return this.instance;
            }
       },
       set {
           this.instance = value;
       }
   }

   public ICar CreateCar(string make){

       switch(make)
       {
           case "Toyota": return new Toyota();
           case "Honda" : return new Honda();
           default: throw new Exception();
       }

   }

}

public interface ICarFactory {
    ICar CreateCar(string make);
} 

public class Toyota : ICar
{
}

public class Honda : ICar
{
}

用法如下所示:

ICar car = CarFactory.SingletonInstance.CreateCar("Toyota");

公开暴露CarFactory的单例实例,可以为单元测试嘲笑CarFactory,并且在调用CreateCar时,您可以让模拟的CarFactory返回嘲弄的ICar。

现在通过实际的依赖关系(例如实现服务的类)来替换工厂中的Cars。 瞧,你有一个包含你所有依赖的工厂。 您现在可以使用Factory来“解析”您的依赖关系。 您可以采用该示例,并通过使用泛型类型和字典(散列表)来进一步推送它,其中键是类型名称,值是实现实例,如:

public T Create<T>(){
    return mydictionary.get(typeof(T).Name);
}

像那样的东西......你得到漂移......

希望能帮助到你!

链接地址: http://www.djcxy.com/p/13619.html

上一篇: Can i use a Factory to implement dependency injection

下一篇: Dependency Inject (DI) "friendly" library