一、简单工厂
简单工厂是一种编程习惯,把变化的代码(new 对象)封装在一个工厂里
用户需求:客户想要在pizza店orderPizza
需求分析:
- 首先只有1个pizza店,有不同种类的pizza,不同客户order不同种类的pizza
- 如果在pizza店的类里用 if else 编码,一旦有新种类就需要改pizza店的代码
- 这里新建一个对象,封装创建pizza对象的部分,这个对象称之为工厂。这样一来,再有新类型的pizza,只要修改工厂即可,pizza店不关注pizza的具体生产过程
- 简单工厂是一个工厂根据不同参数生产出不同的产品(所需对象),一个工厂类对应多个不同的产品类
类图设计
- 工厂的客户:PizzaStore,要购买预定各种各样的pizza
- 创建Pizza的简单工厂:SimplePizzaFactory,唯一用到具体pizza类的地方
- 工厂的产品:Pizza,定义为抽象类
- 工厂的具体产品:CheesePizza,ClamPizza等
代码示例
PizzaStore代码
package Factory.SimpleFactory;
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;
}
}
SimplerPizzaFactory代码
package Factory.SimpleFactory;
public class SimplePizzaFactory {
public Pizza createPizza(String type) {
Pizza pizza = null;
switch (type) {
case "cheese":
pizza = new CheesePizza();
break;
case "clam":
pizza = new ClamPizza();
break;
case "veggie":
pizza = new VeggiePizza();
break;
default:
break;
}
return pizza;