关于java:Factory方法VS工厂对象

Factory Method VS Factory Object

本问题已经有最佳答案,请猛点这里访问。

据我所知,工厂方法是简单的工厂,而工厂对象是抽象工厂?还有:

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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;
    }
}

工厂对象(抽象工厂):

我说得对吗?

工厂模式的实现程度有多高?它们的区别是什么?


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

抽象工厂是一个不同的东西-在那里你有多个相同抽象概念的工厂实现。维基百科的例子是关于e GUIFactory—这是一个抽象工厂,有两个实现:WinFactoryOSXFactory。客户机代码不知道它使用的是哪个实现——它只知道工厂创建了Button实例。这使得不管操作系统是什么,都可以编写相同的代码。