首页 文章

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

提问于
浏览
0

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

1 回答

  • 1

    这是我的头脑,未经测试的代码(使用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进行单元测试,并且可以让您的模拟CarFactory在调用CreateCar时返回模拟ICar .

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

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

    这样的东西......你得到漂移......

    希望能帮助到你!

相关问题