標籤:
簡單原廠模式(Simple Factory Pattern)屬於類的創新型模式,又叫靜態Factory 方法模式(Static FactoryMethod Pattern),是通過專門定義一個類來負責建立其他類的執行個體,被建立的執行個體通常都具有共同的父類(或者父介面)。
簡單原廠模式的 UML 圖:
(1)抽象(Product)產品角色:簡單原廠模式所建立的所有對象的父類,注意,這裡的父類可以是介面也可以是抽象類別,它負責描述所有執行個體所共有的公用介面。
(2)具體產品(Concrete Product)角色:簡單工廠所建立的具體執行個體對象,這些具體的產品往往都擁有共同的父類。
(3)工廠角色(Creator):這是簡單原廠模式的核心,由它負責建立所有的類的內部邏輯。當然工廠類必須能夠被外界調用,建立所需要的產品對象。
代碼:
(1)抽象產品角色:
package com.liwei.factory.simple;/** * 抽象(Product)產品角色 * 負責描述所有執行個體的公用介面 * @author Administrator * */public interface Doll { public void getInfo();}
(2)具體產品角色
package com.liwei.factory.simple;public class BarbieDoll implements Doll { @Override public void getInfo() { System.out.println("我是芭比娃娃"); }}
package com.liwei.factory.simple;public class ClothDoll implements Doll { @Override public void getInfo() { System.out.println("我是布娃娃"); }}
(3)工廠角色:
package com.liwei.factory.simple;public class DollFactory { public static Doll getInstance(String name){ if("barbie".equals(name)){ return new BarbieDoll(); }else if("cloth".equals(name)){ return new ClothDoll(); }else{ return null; } }}
(4)測試類別:
package com.liwei.factory.simple;public class Client { public static void main(String[] args) { Doll doll1 = DollFactory.getInstance("cloth"); doll1.getInfo(); Doll doll2 = DollFactory.getInstance("barbie"); doll2.getInfo(); }}
由原來的直接依賴,變為依賴工廠了。只是把依賴關係轉移了。
Java 設計模式之 簡單原廠模式(靜態Factory 方法模式)