建造工厂的最佳方式

guy*_*uyl 6 design-patterns factory factory-pattern

我最近一直在阅读有关工厂模式的文章.我试图找出实现它的最佳方法.在C#Agile Principles模式和实践的书中,建议是像这样创建工厂:

public class ShapeFactoryImplementation : ShapeFactory {
    public Shape Make(string name) {
        if (name.Equals("Circle"))
            return new Circle();
        else if (name.Equals("Square"))
            return new Square();
        else
            throw new Exception("ShapeFactory cannot create: {0}", name);
        }
    }
Run Code Online (Sandbox Code Playgroud)

而不是...

public class ShapeFactoryImplementation : ShapeFactory {
    public Shape MakeCircle() {
        return new Circle();
    }

    public Shape MakeSquare() {
        return new Square();
    }
}
Run Code Online (Sandbox Code Playgroud)

请告诉我你的想法是什么?或者可能有更好的方法来实现工厂模式?

Joe*_*zer 2

工厂模式的要点是将客户端与对象的创建解耦。

在第二个示例中,客户端对要创建的形状进行了硬编码,例如MakeCircle,因此将对象创建和客户端紧密耦合。