【发布时间】:2019-06-12 18:26:13
【问题描述】:
Head First Design Patterns 将简单工厂描述为
public class SimplePizzaFactory {
public Pizza createPizza(String type) {
Pizza pizza = null;
if (type.equals(“cheese”)) {
pizza = new CheesePizza();
} else if (type.equals(“pepperoni”)) {
pizza = new PepperoniPizza();
} else if (type.equals(“clam”)) {
pizza = new ClamPizza();
} else if (type.equals(“veggie”)) {
pizza = new VeggiePizza();
}
return pizza;
}
}
与工厂方法模式和抽象工厂模式相比,简单工厂的缺点是什么?
在 Gamma 等人的 Design Patterns 中,工厂方法模式中的类参数化工厂方法看起来类似于简单工厂。参数化的抽象工厂完全是简单工厂是否正确? 设计模式是否提到参数化抽象工厂?
【问题讨论】:
-
工厂方法适用于代码从不改变的情况(例如,Guava 的
Collections2.newLinkedList()在我编写的所有应用程序中都没有改变)。 (简单)工厂适用于您想要添加新结果但对象的构造基本相同的情况。如果整个构造过程根据结果对象的实际实现而变化,则为抽象工厂。