設計模式(Design Pattern) – Factory Method (工廠方法)

解釋 : 像是膠囊咖啡機的膠囊咖啡

傳統的咖啡機可能只有幾種固定的口味,如義式咖啡、美式咖啡,如果要牛奶還要另外加。

膠囊咖啡機將口味改放到膠囊裡面,當你使用機器時,只要放入不同的口味膠囊,就可以泡出不同口味的咖啡,甚至有奶茶、巧克力等等口味可以選。

也就是如同膠囊咖啡機,會產生什麼飲品都是藉由你放入的膠囊決定。


目的

定義可生成的物件的介面,讓子類別該具現哪一種類別的物件。將具現化程序交付給子類別去處置

別名

Virtual constructor (虛擬建構式)


範例

建立一個 IProduct 介面,用來建立 ConcreteProduct

目前建立兩個 ConcreteProduct : Coffee 跟 Milk

接著建立 Creator 裡面定義回傳的 Product , GetDrink 即 factory method

建立膠囊

建立機器 :

當你需要咖啡時,只要放入膠囊,然後執行 GetDrink,你就能得到咖啡 :


結構

參與者

  • Product – FactoryMethod 所造的物件介面
  • ConcreteProduct – 具體實作的 Product
  • Creator – 宣告 factory method,會回傳 Product 型別之物件
  • ConcreteCreator – 複寫 factory method 以傳回 ConcreteProduct

替子類別預留掛勾(hook)

如同上面的膠囊,你可能只是訂出膠囊的規格,但裡面要生產的口味還沒決定。

例如你跟另一個協作系統已經確定如何存取互動,但是還無法明確指出欲生成的類別時,可以只建立 IProduct,待確定之後才添加 ConcreteProduct

 

 

print

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *