工厂方法VS工厂对象
问题描述:
据我了解,工厂方法是简单工厂和工厂对象是抽象工厂? 人和:工厂方法VS工厂对象
- 工厂方法(简单工厂):
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()
方法,它使用它的当前状态来创建一个不同类型的新对象。
抽象工厂是不同的东西 - 在那里你有多个相同抽象概念的工厂实现。 wikipedia example约为e GUIFactory
- 这是一个抽象工厂,它有两个实现:WinFactory
和OSXFactory
。客户端代码不知道它正在使用哪个实现 - 它只知道工厂创建了Button
实例。无论操作系统如何,都可以编写相同的代码。
你是对的,谢谢 – drifter 2012-02-02 19:06:48
另一件事,除非你使用一些古老的Java版本,请使用枚举而不是整数来枚举可能的比萨类型。 – Renato 2012-02-02 19:14:07
+1,我发现这个古老的例子(Java的那个时候还没有枚举呢。) – drifter 2012-02-02 19:16:56