据我所知,工厂方法是简单工厂,工厂对象是抽象工厂? 和
- 工厂方法(简单工厂):
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;
}
}
工厂对象(抽象工厂):
我是对的吗?
工厂模式的实现有多少,它们的区别是什么?
答案 0 :(得分:6)
没有。工厂方法是不需要任何状态的工厂。工厂类本身就是一个类 - 它具有状态和改变该状态的方法。最后,您调用.create()
方法,并使用其当前状态创建不同类型的新对象。
抽象工厂是另一回事 - 你有同一个抽象概念的多个工厂实现。 wikipedia example约为e GUIFactory
- 这是一个抽象工厂,有两个实现:WinFactory
和OSXFactory
。客户端代码不知道它正在使用哪个实现 - 它只知道工厂创建Button
个实例。无论操作系统如何,都可以编写相同的代码。