2)具体披萨类,继承抽象披萨类
public class CheesePizza extends Pizza{ public void prepare() { System.out.println("给制作奶酪披萨准备原材料"); } } public class GreekPizza extends Pizza{ public void prepare() { System.out.println("给希腊披萨准备原材料"); } } public class PepperPizza extends Pizza{ public void prepare() { System.out.println("给胡椒披萨准备原材料"); } }3)披萨工厂类
public class SimpleFactory { public Pizza createPizza(String orderType){ Pizza pizza = null; System.out.println("使用简单工厂模式"); if(orderType.equals("greek")){ pizza = new GreekPizza(); pizza.setName("希腊披萨"); }else if(orderType.equals("cheese")){ pizza = new CheesePizza(); pizza.setName("奶酪披萨"); }else if(orderType.equals("pepper")){ pizza = new PepperPizza(); pizza.setName("胡椒披萨"); } return pizza; } }4)披萨订单类
public class OrderPizza { //定义一个简单工厂对象 public OrderPizza(SimpleFactory simpleFactory){ setFactory(simpleFactory); } //定义一个简单工厂对象 SimpleFactory simpleFactory; Pizza pizza = null; public void setFactory(SimpleFactory simpleFactory){ String orderType = "";//用户输入的 this.simpleFactory = simpleFactory; do{ orderType = getType(); pizza = this.simpleFactory.createPizza(orderType); //输出pizza if(pizza != null){ pizza.prepare(); pizza.back(); pizza.cut(); pizza.box(); }else{ System.out.println("订购披萨失败"); break; } }while(true); } //写一个方法,可以获取客户希望订购的披萨种类 private String getType(){ try{ BufferedReader strin = new BufferedReader(new InputStreamReader(System.in)); System.out.println("input pizza type:"); String str = strin.readLine(); return str; }catch (IOException e){ e.printStackTrace(); return ""; } } }5)店铺类
//相单于一个客户端,发出订购 public class PizzaStore { public static void main(String[] args) { //new OrderPizza(); //使用简单工厂模式 new OrderPizza(new SimpleFactory()); System.out.println("退出程序"); } }