设计模式读书笔记啊-工场方法模式
工厂方法
工厂方法使用继承;把对象的创建委托给子类,由子类决定实例化哪一个.
就是将相同的方法放到一起。
Abstract Product factoryMethod(String type)
工厂方法 是抽象的;
必须返回一个产品对象;
必须传入一个类型,决定创建哪个对象;
该方法是继承该类后,要实现的。
用工场方法模式修改工厂方法的例子:
把createPizza放回PizzaStore里,不过声明为抽象方法,由具体继承的类实现。
修改后的PizzaStore类:
public abstract class PizzaStore {
abstract Pizza createPizza(String item);
public Pizza orderPizza(String type) {
Pizza pizza = createPizza(type);
System.out.println("--- Making a " + pizza.getName() + " ---");
pizza.prepare();
pizza.bake();
pizza.cut();
pizza.box();
return pizza;
}
}
继承PizzaStore的类,实现createPizza类,返回具体Pizza。
public class ChicagoPizzaStore extends PizzaStore {
Pizza createPizza(String item) {
if (item.equals("cheese")) {
return new ChicagoStyleCheesePizza();
} else if (item.equals("veggie")) {
return new ChicagoStyleVeggiePizza();
} else if (item.equals("clam")) {
return new ChicagoStyleClamPizza();
} else if (item.equals("pepperoni")) {
return new ChicagoStylePepperoniPizza();
} else return null;
}
}
工厂方法就是将类的创建交由子类完成,在产品和产品创建者间构建了一个平台。
和简单工厂的区别;简单工厂就是封装创建类的方法。不能更改正在创建的产品,而工厂方法提供了一格框架,可以动态的由子类决定如何创建产品。
工厂方法更适用于由更多的产品类别,每个类别又有不同的类型。需要实例化的产品具备不同的特性。
补充:Web开发 , ASP.Net ,