程式設計模式-工廠方法模式Factory method pattern

定義: 

一種實現了「工廠」概念的物件導向設計模式。就像其他建立型模式一樣,它也是處理在不指定物件具體類型的情況下建立物件的問題。工廠方法模式的實質是「定義一個建立物件的介面,但讓實現這個介面的類來決定實例化哪個類。工廠方法讓類別的實例化推遲到子類中進行。


建立一個物件常常需要複雜的過程,所以不適合包含在一個複合物件中。建立物件可能會導致大量的重複代碼,可能會需要複合物件存取不到的資訊,也可能提供不了足夠級別的抽象,還可能並不是複合物件概念的一部分。工廠方法模式通過定義一個單獨的建立物件的方法來解決這些問題。由子類實現這個方法來建立具體類型的物件。


物件建立中的有些過程包括決定建立哪個物件、管理物件的生命周期,以及管理特定物件的建立和銷毀的概念。


範例:

public interface Product {

    //敘述自己是什麼商品

    public void describe();

}

public interface Factory {

    //工廠返回商品

    public Product getProduct();

}

//實現商片,例如:薯條

public class FrenchFries implements Product{


    //預設有鹽巴的

    String state = "有鹽巴";

    //預設的建構

    protected FrenchFries(){}

    //帶入狀態的建構

    protected FrenchFries(String state){

        this.state = state;

    }


    @Override

    public void describe() {

        System.out.println("我是"+ state +"薯條");

    }

}

//薯條工廠

public class FrenchFriesFactory implements Factory {


    //返回一般的薯條

    @Override

    public Product getProduct() {

        return new FrenchFries();

    }


    //返回我們想要的狀態的薯條..

    public Product getProduct(String state) {

        return new FrenchFries(state);

    }

}


//執行工廠

Factory friesFac = new FrenchFriesFactory();

Product fries = friesFac.getProduct();

Product myfries = ((FrenchFriesFactory) friesFac).getProduct("無鹽的");


 fries.describe();//我是有鹽巴薯條

 myfries.describe();//我是無鹽的薯條



會返回我們想要的商品


參考資料:

https://zh.wikipedia.org/zh-tw/%E5%B7%A5%E5%8E%82%E6%96%B9%E6%B3%95

https://ithelp.ithome.com.tw/articles/10202075

留言

熱門文章