iT邦幫忙

2022 iThome 鐵人賽

DAY 14
0
自我挑戰組

設計模式探索系列 第 14

[Day 14] 工廠模式 (4)

  • 分享至 

  • xImage
  •  

加入食材工廠

最後要進入抽象工廠模式前,先來設想一個情況─前面對於pizza的製作,是由各pizza factory各自create實例化出來,而現在希望連pizza本身的製作食材都在地化,意思是不只是口味,連裡面的各種材料都有自己一套,但又希望有一致的規範管理(否則又會是維護災難!)。從前面的練習,應該不難想像可以透過一個統一的介面來進行管理。這裡我們就以 "食材工廠 來舉例,用它作為介面來規範大家的食材生產方式。直接來看看具體的程式碼應該最清楚:

  • 創建一個食材工廠的介面
/*程式碼待補*/
  • 各地有不同的食材工廠
/*程式碼待補*/
  • 而pizza本身帶有原料的架構
/*程式碼待補*/
  • 而在每間不同的pizza店,都會依賴對應的食材工廠,來產生pizza
/*程式碼待補*/

這個加入的食材工廠,可以稱為 抽象工廠(abstract factory) ,進一步把會變動的食材再抽出來,讓各地的pizza store本身依據口味去create pizza就好,不用連各種食材都定義在pizza store裡面,而是交由食材工廠去做,又達到解耦合的功效。

抽象工廠模式 (abstract factory)

來看看抽象工廠模式的定義:

抽象工廠模式提供一個介面來建立相關或相依的物件家族,而不需要指定具體類別。

抽象工廠模式的架構大致如下

圖1

而在本例中,抽象工廠模式的架構圖會像這樣:

圖2

結語

在工廠方法這系列第一次讀真的會不太確定他們之間的區別定義,因為本書用非常故事化的手法來敘述,有時候沒辦法直接對應具體的定義,一邊爬了很多說明文,再來回對照,看了好幾次終於比較清楚代表的概念;但工廠模式這系列真的非常常見,弄懂之後對於設計模式可說是多了一層把握!建議也可以多多找尋相關的資料,消化成可以自己掌握的知識。


上一篇
[Day 13] 工廠模式 (3)
下一篇
[Day 15] 單例模式 (1)
系列文
設計模式探索30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言