JS 使用xlsx.core.js 資料匯出到excel
阿新 • • 發佈:2020-12-01
工廠方法模式
- 工廠方法模式:定義了一個建立物件的抽象方法,由子類決定要例項化的類。工廠方法模式將物件的例項化推遲到子類
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;
}
}
小結
- 工廠模式的意義
將例項化物件的程式碼提取出來,放到-一個類中統一-管理和維護,達到和主專案的依賴關係的解耦。從而提高專案的擴充套件和維護性。 - 三種工廠模式(簡單工廠模式、工廠方法模式、抽象工廠模式)
- 設計模式的依賴抽象原則
➢建立物件例項時,不要直接new類,而是把這個new類的動作放在一個工廠的方法中,並返回。有的書上說,變數不要直接持有具體類的引用。
➢不要讓類繼承具體類,而是繼承抽象類或者是實現interface(介面)
➢不要覆 蓋基類中已經實現的方法。