簡單工廠模式(Simple Factory Pattern)又叫靜態工廠方法模式(Static FactoryMethod Pattern),是通過專門定義一個類來負責創建其他類的實例,被創建的實例通常都具有共同的父類。當你需要什么,只需要傳入一個正確的參數,就可以獲取你所需要的對象,而無須知道其創建細節。
簡單工廠模式其實不是一個設計模式,反而比較像是一種編程習慣。但由于經常被使用,所以我們先來學習。
用簡單工廠模式寫的烤魚店實例類圖如下: 客人通過KaoYu類的orderFish()方法來點單,SimpleFishFactory類的orderFish()負責創建不同烤魚類型,Fish是烤魚父類,CaoYu,NianYu,JiYu,LuYu是具體實現。
Fish類代碼實現:
public class Fish { String name = "Unknow name"; public String getname(){ return name; }}CaoYu類代碼實現:
public class CaoYu extends Fish{ public CaoYu(){ name = "草魚"; System.out.NianYu類代碼實現:public class NianYu extends Fish{ public NianYu(){ name = "鯰魚"; System.out.println("烤"+name); }}JiYu類代碼實現:
public class JiYu extends Fish{ public JiYu(){ name = "鯽魚"; System.out.println("烤"+name); }}LuYu類代碼實現:
public class LuYu extends Fish{ public LuYu(){ name = "鱸魚"; System.out.println("烤"+name); }}SimpleFishFactory類代碼實現:
public class SimpleFishFactory { public Fish createFish(String type){ if (type.equals("CaoYu")) { return new CaoYu(); }else if (type.equals("NianYu")) { return new NianYu(); }else if (type.equals("JiYu")) { return new JiYu(); }else if (type.equals("LuYu")) { return new LuYu(); } return null; }}createFish方法根據傳進來的不同參數,返回一個對應的對象。
KaoYu類代碼實現:
public class KaoYu { SimpleFishFactory factory; public KaoYu(SimpleFishFactory factory){ this.factory = factory; } public Fish orderFish(String type){ Fish fish; fish = factory.createFish(type); System.out.println("我是一條烤"+fish.getname()); return fish; }}KaoYu類傳進來一個SimpleFishFactory對象,然后orderFish根據type來返回一個對應的對象。
測試類KaoYuTest代碼實現:
public class KaoYuTest { public static void main(String[] args){ SimpleFishFactory factory = new SimpleFishFactory(); KaoYu kaoYu = new KaoYu(factory); kaoYu.orderFish("JiYu"); }}執行結果:
烤鯽魚我是一條烤鯽魚新聞熱點
疑難解答