使用界面注入工厂

时间:2016-01-11 13:34:22

标签: c# dependency-injection factory

我有这个工厂:

public static class ClassFactory
{
    public static IEnumHereClass CreateClass(EnumHere type)
    {
        switch (type)
        {
            case EnumHere.First:
                return new EnumHereFirstClass();
            case EnumHere.Second:
                return new EnumHereSecondClass();
            default:
                throw new NotSupportedException();
        }
    }
}

看起来不错。但是我在这里看到了问题:我无法使用IoC容器(例如统一)注入它并且无法模拟它。我想进行此更改(使用接口注入并删除 static ):

public class ClassFactory : IClassFactory
{
    public IEnumHereClass CreateClass(EnumHere type)
    {
        switch (type)
        {
            case EnumHere.First:
                return new EnumHereFirstClass();
            case EnumHere.Second:
                return new EnumHereSecondClass();
            default:
                throw new NotSupportedException();
        }
    }
}

您怎么看?

1 个答案:

答案 0 :(得分:0)

查看Abstract Factory Pattern

  

<强>意图

     

Abstract Factory提供了用于创建一系列相关对象的界面,而无需明确指定其类。

我发现此问题之前已使用进行了标记。不要与抽象工厂混淆。