工厂方法模式
定义了一个创建对象的接口,但是由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。
- 使用new时,是针对实现编程,依赖具体类
- 工厂方法模式将产品的“实现”从“使用”中解耦
- “工厂”封装实例化的行为
设计原则
6、要依赖抽象,不要依赖具体类
工厂方法类图:
1、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;
}
}
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;
}
}
2、把对象的创建委托给子类,子类实现抽象的工厂方法来创建具体产品。(使用继承)
NYPizzaStore所封装的知识是关于如何制作纽约风味的匹萨
ChicagoPizzaStore所封装的知识是关于如何制作芝加哥风味的匹萨
(转载请注明出处 ^.^)