1. 程式人生 > 實用技巧 >JS 使用xlsx.core.js 資料匯出到excel

JS 使用xlsx.core.js 資料匯出到excel

工廠方法模式

  • 工廠方法模式:定義了一個建立物件的抽象方法,由子類決定要例項化的類。工廠方法模式將物件的例項化推遲到子類
public abstract class OrderPizza {

   //定義一個抽象方法,createPizza , 讓各個工廠子類自己實現
   abstract Pizza createPizza(String orderType);
   
   // 構造器
   public OrderPizza() {
      Pizza pizza = null;
      String orderType; // 訂購披薩的型別
      do {
         orderType = getType();
         pizza = createPizza(orderType); //抽象方法,由工廠子類完成
         //輸出pizza 製作過程
         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("input pizza 種類:");
         String str = strin.readLine();
         return str;
      } catch (IOException e) {
         e.printStackTrace();
         return "";
      }
   }

}
public class PizzaStore {

   public static void main(String[] args) {
      String loc = "bj";
      if (loc.equals("bj")) {
         //建立北京口味的各種Pizza
         new BJOrderPizza();
      } else {
         //建立倫敦口味的各種Pizza
         new LDOrderPizza();
      }
      // TODO Auto-generated method stub
   }

}
public class BJOrderPizza extends OrderPizza {

   
   @Override
   Pizza createPizza(String orderType) {
   
      Pizza pizza = null;
      if(orderType.equals("cheese")) {
         pizza = new BJCheesePizza();
      } else if (orderType.equals("pepper")) {
         pizza = new BJPepperPizza();
      }
      // TODO Auto-generated method stub
      return pizza;
   }

}
public class LDOrderPizza extends OrderPizza {

   
   @Override
   Pizza createPizza(String orderType) {
   
      Pizza pizza = null;
      if(orderType.equals("cheese")) {
         pizza = new LDCheesePizza();
      } else if (orderType.equals("pepper")) {
         pizza = new LDPepperPizza();
      }
      // TODO Auto-generated method stub
      return pizza;
   }

}

小結

  1. 工廠模式的意義
    將例項化物件的程式碼提取出來,放到-一個類中統一-管理和維護,達到和主專案的依賴關係的解耦。從而提高專案的擴充套件和維護性。
  2. 三種工廠模式(簡單工廠模式、工廠方法模式、抽象工廠模式)
  3. 設計模式的依賴抽象原則
    ➢建立物件例項時,不要直接new類,而是把這個new類的動作放在一個工廠的方法中,並返回。有的書上說,變數不要直接持有具體類的引用。
    ➢不要讓類繼承具體類,而是繼承抽象類或者是實現interface(介面)
    ➢不要覆 蓋基類中已經實現的方法。