packagecom.yqq.pattern.factory.simple.pizza;/*** Created with IntelliJ IDEA.** @Author: yqq* @Date: 2022/08/18/20:15* @Description:*/publicabstractclassPizza{protectedString name;//名字//準備材料,不同的披薩是不一樣的,做成抽象方法publicabstractvoidprepare();publicvoidbake(){System.out.println(name +" baking;");}publicvoidcut(){System.out.println(name +" cutting;");}publicvoidbox(){System.out.println(name +" boxing;");}publicvoidsetName(String name){this.name = name;}}
CheesePizza類
packagecom.yqq.pattern.factory.simple.pizza;/*** Created with IntelliJ IDEA.** @Author: yqq* @Date: 2022/08/18/21:30* @Description:*/publicclassCheesePizzaextendsPizza{publicvoidprepare(){System.out.println("給制作奶酪披薩準備原材料");}}
GreekPizza類
packagecom.yqq.pattern.factory.simple.pizza;/*** Created with IntelliJ IDEA.** @Author: yqq* @Date: 2022/08/18/21:31* @Description:*/publicclassGreekPizzaextendsPizza{publicvoidprepare(){System.out.println("給希臘披薩準備原材料");}}
PepperPizza類
packagecom.yqq.pattern.factory.simple.pizza;/*** Created with IntelliJ IDEA.** @Author: yqq* @Date: 2022/08/18/23:03* @Description:*/publicclassPepperPizzaextendsPizza{publicvoidprepare(){System.out.println("給胡椒披薩準備原材料");}}
OrderPizza類(使用方)
packagecom.yqq.pattern.factory.simple.order;importcom.yqq.pattern.factory.simple.pizza.GreekPizza;importcom.yqq.pattern.factory.simple.pizza.PepperPizza;importcom.yqq.pattern.factory.simple.pizza.Pizza;importjava.io.BufferedReader;importjava.io.InputStreamReader;/*** Created with IntelliJ IDEA.** @Author: yqq* @Date: 2022/08/18/22:08* @Description: 使用方*/publicclassOrderPizza{//構造器publicOrderPizza(){Pizza pizza =null;String orderType;//訂購披薩的類型do{orderType =getType();if(orderType.equals("greek")){pizza =newGreekPizza();pizza.setName("希臘披薩");}elseif(orderType.equals("cheese")){pizza =newGreekPizza();pizza.setName("奶酪披薩");}//這里屬于新增一個披薩類型后要修改使用方代碼,違反了開閉原則elseif(orderType.equals("pepper")){pizza =newPepperPizza();pizza.setName("胡椒披薩");}elsebreak;//輸出pizza,制作過程pizza.prepare();pizza.bake();pizza.cut();pizza.box();}while(true);}//寫一個方法,可以獲取客戶希望訂購的披薩種類privateStringgetType(){try{BufferedReader reader =newBufferedReader(newInputStreamReader(System.in));System.out.println("input pizza 類型:");String line = reader.readLine();return line;}catch(Exception e){e.fillInStackTrace();returnnull;}}}
PizzaStore類(測試)
packagecom.yqq.pattern.factory.simple.order;/*** Created with IntelliJ IDEA.** @Author: yqq* @Date: 2022/08/18/22:28* @Description: 相當于一個客戶端,*/publicclassPizzaStore{publicstaticvoidmain(String[] args){newOrderPizza();}}