C#呼叫工厂从另一家工厂简单的工厂设计?

时间:2017-06-11 10:06:24

标签: c# oop design-patterns factory

我需要在C#中使用简单工厂创建一个对象,该对象具有一个依赖项对象,该对象也是使用另一个简单工厂创建的。

从另一个简单的工厂打电话给一个简单的工厂是一个好的设计原则吗?我想我可能会做一些奇怪的事情。

我有以下内容:

interface IObjecAtImplement {
    void task();
}

interface IObjecBtImplement {
    void taskFoo();
    void anotherTaskFoo();
}

public static class ObjectAFactory {

    public static IObjecAtImplement Get(string objecttype) {
        IObjectBImplement objectB = ObjectBFactory.Get(objecttype);
        switch (objecttype)
        case "A";
            return ObjectAFirstImplementacion(objectB);
        case "B";
            return ObjectASecondImplementacion(objectB);
    }
}

public static class ObjectBFactory {
    public static IObjecBtImplement Get(string objecttype) {    
        switch (objecttype)    
        case "A";
            return new ObjectBFirstImplementacion();
        case "B";
            return new ObjectBSecondImplementacion();
        }
    }
}

这是一个好主意吗?还有其他解决方法吗? (代码括号写得不好,只是一个例子)

1 个答案:

答案 0 :(得分:1)

您似乎尝试将两种模式合二为一:factoryinversion of control。工厂负责创建对象,而注入依赖项通常是IoC容器的一个部门。

为了保持课程的明确职责,我建议使用许多IoC containers in .NET中的一个。