需求:
客户在点披萨时,可以点不同口味的披萨,比如北京的奶酪披萨,北京的胡椒披萨,或者是伦敦的奶酪披萨,伦敦的胡椒披萨
思路1
使用简单工厂模式,创建不同的简单工厂类,比如BJPizzaSimpleFactory、LDPizzaSimpleFactory等等,考虑到项目的规模,以及软件的可维护性,可扩展性并不是特别好
思路2
使用工厂方法模式
工厂方法模式介绍
工厂方法模式设计方案:将披萨项目的实例化功能抽象成抽象方法,在不同的口味点餐子类中具体实现
工厂方法模式:定义一个创建对象的抽象方法,由子类决定要实例化的类,工厂方法模式将对象的实例化推迟到子类
Pizza

BJCheesePizza

BJPepperPizza

LDCheesePizza

LDPepperPizza

OrderPizza
dart
package com.baidu.factory.factorymethod.pizzastore.order;
import com.baidu.factory.factorymethod.pizzastore.pizza.Pizza;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public abstract class OrderPizza {
abstract Pizza createPizza(String orderType);
public OrderPizza(){
Pizza pizza = null;
String orderType;
// 订购披萨的类型
do{
orderType = getType();
pizza = createPizza(orderType);
pizza.prepare();
pizza.bake();
pizza.cut();
pizza.box();
}while (true);
}
private String getType(){
try {
BufferedReader strin = new BufferedReader(new InputStreamReader(System.in));
System.out.println("请输入披萨种类:");
String str = strin.readLine();
return str;
} catch (IOException e) {
e.printStackTrace();
return "";
}
}
}
BJOrderPizza

LDOrderPizza

PizzaStore
