Java 設計模式之 簡單工廠模式(靜態工廠方法模式)


簡單工廠模式(Simple Factory Pattern)屬於類的創新型模式,又叫靜態工廠方法模式(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();
    }
}

由原來的直接依賴,變為依賴工廠了。只是把依賴關系轉移了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM