public class PizzaStore {
SimplePizzaFactory factory;
public PizzaStore(SimplePizzaFactory factory) {
this.factory = factory;
}
public Pizza orderPizza(String type) {
Pizza pizza;
pizza = factory.createPizza(type);
pizza.prepare();
pizza.bake();
pizza.cut();
pizza.box();
return pizza;
}
}
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;
}
}
1.简单工厂
<1>封装变化
<2>依赖接口
<3>将变化的代码放到一起
2.工厂方法
定义:工厂方法模式定义了一个创建对象的接口,由子类决定要实例化的子类是哪一个,工厂方法让类把实例化推迟到子类 (有点像模板方法)
将产品的实现从使用中解耦
3.抽象工厂
定义:提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类
场景:车间
区别:
继承(类) 和 组合(对象)
工厂方法提供框架
抽象工厂把一群相关产品集合起来,创建产品家族
依赖倒置
网友评论