工厂方法VS工厂对象

时间:2012-02-02 18:50:26

标签: java design-patterns factory factory-pattern factory-method

据我所知,工厂方法是简单工厂,工厂对象是抽象工厂? 和

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

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;
    }
}

工厂对象(抽象工厂):

我是对的吗?

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

1 个答案:

答案 0 :(得分:6)

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

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