7

据我了解,工厂方法是简单工厂,工厂对象是抽象工厂?和:

-工厂方法(简单工厂):

public class SimplePizzaFactory {
    public static final int CHEESE = 1;
    public static final int PEPPERONI = 2;
    public static final int VEGGIE = 3;

    public static Pizza createPizza(int type) {
        Pizza pizza = null;

        if (type == CHEESE) {
            pizza = new CheesePizza();
        } else if (type == PEPPERONI ) {
            pizza = new PepperoniPizza();
        } else if (type == VEGGIE ) {
            pizza = new VeggiePizza();
        }

        return pizza;
    }
}

工厂对象(抽象工厂):

?

我对吗?

工厂模式有多少实现,它们有什么区别?

4

1 回答 1

6

不,工厂方法是不需要任何状态的工厂。工厂类本身就是一个类——它具有状态和改变该状态的方法。最后,您调用该.create()方法,它使用其当前状态来创建不同类型的新对象。

抽象工厂是另一回事——你有同一个抽象概念的多个工厂实现。维基百科的例子是关于 e GUIFactory- 这是一个抽象工厂,它有两个实现:WinFactoryOSXFactory. 客户端代码不知道它正在使用哪个实现——它只知道工厂创建了Button实例。这使得无论操作系统如何都可以编写相同的代码。

于 2012-02-02T18:58:00.243 回答