模版設計模式:線上購物流程
阿新 • • 發佈:2018-11-22
程式碼:
//模版設計模式:線上購物流程 (天貓,京東) //瀏覽商品 -> 選擇商品 -> 客服服務 -> 快遞服務 -> 結算 -> 付款 -> 檢視訂單 public class Shopping{ public static void main(String[] args){ OnlineShopping tmall = new Tmall(); OnlineShopping jd = new JD(); System.out.println("天貓購物:"); tmall.prepareRecipe(); System.out.println("----------------------------------"); System.out.println("京東購物:"); jd.prepareRecipe(); } } //網上購物是一個抽象類 abstract class OnlineShopping{ final void prepareRecipe() { browseProducts(); selectProducts(); if (customerWantsService()){ customerService(); } courierService(); settlement(); payment(); checkOrder(); } public void browseProducts(){ System.out.println("瀏覽商品"); } public void selectProducts(){ System.out.println("選擇商品"); } public void settlement(){ System.out.println("結算"); } public void payment(){ System.out.println("付款"); } public void checkOrder(){ System.out.println("檢視訂單"); } //因為天貓和京東的客服服務與快遞服務不同,將這兩個方法宣告為抽象,讓子類實現 abstract void customerService(); abstract void courierService(); //判斷是否需要客服服務 public boolean customerWantsService(){ String answer = getUserInput(); if(answer.equals("y")){ return true; }else{ return false; } } //詢問顧客的意見 private String getUserInput(){ System.out.println("您需要客服服務麼?(y/n)"); java.util.Scanner scanner = new java.util.Scanner(System.in); String answer = scanner.nextLine(); return answer; } } class Tmall extends OnlineShopping{ public void customerService (){ System.out.println("阿里旺旺服務"); } public void courierService(){ System.out.println("天貓直達服務"); } } class JD extends OnlineShopping{ public void customerService (){ System.out.println("京東客服服務"); } public void courierService(){ System.out.println("京東配送服務"); } }
執行結果: