程式設計模式-工廠方法模式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
留言
張貼留言