Try   HackMD

六角鼠年鐵人賽 Week 33 - Design Pattern - Factory Method

大家好,我是 "為了拿到金角獎盃而努力著" 的文毅青年 - Kai

鈴木一郎

我的準備工作,就是排除任何會成為藉口的因素。

主題 Factory Method

上篇文章提到了 Open Close Principle 後,來談談常被提起一併討論的 Factory Method

中文常見名稱 工廠模式

到底很多人就會問了,Open Close Principle 跟 Factory Method 有哪裡不一樣?

說實在的,一開始 Kai 也不懂哪裡不同,因為兩者基本架構的 UML 一攤開幾乎一模一樣。

我覺得最好懂得應該是這樣:

  • Open Close Principle 是個設計上的 原則,它希望你能夠透過動態的方式建立實體,省略掉越多的 if 處理越好,甚至乾脆不要有 if 處理。
  • Factory Method 是個實際可以應用的 做法,開發人員不需要去多了解子類別的應用是如何實現的,而是專心地將各個子類別放置到適當的位置去。

不知道這樣的說明,大家是否可以懂兩者的區別?

還是要先強調一點: 設計模式 是為了做出更棒的架構,而沒有孰優孰劣之分。套句豹頭的話:「我全都要!」

原則說明

類同 Open Close Principle,透過更換實體的方式,達到處理相同類型不同需求的目的,維持程式碼的整潔與節省開發人員的時間。

以下方圖為範例:

客戶端使用 CarService、放入參數、CarService 根據參數決定給出哪一個 Car 實體(TESLA or BMW),使用者並不需要知道其中判斷的邏輯,而是只要確保給出的類別是遵照 Car 介面的即可。

如此一來,客戶端可以藉由 CarService 進行快速、大量、重複物件的產生,這就是工廠模式的效果。

架構

  • 抽象、介面等接口物件
  • 繼承實作的類別實體

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

目的

  1. 僅須對新擴展的實體進行測試,不須測試舊實體,節省測試環節
  2. 減少接口物件的維護作業
  3. 提高程式碼的重複可用性
  4. 擴展彈性增加需求實現的速度

Design Pattern 的學習不只是制式的設計架構學習,諸如 Open Close Principle 這種單純的原理也是 Kai 學習的方向之一,正所謂多讀一點書、多走一點路,人生就會更寬闊一些。
針對 Design Pattern 的部分,在主頁的排版上也許會有點不同,目的是希望說透過一連串的方式,尋系漸進讓大家知道說,哪些部分是什麼設計? 中間如何串聯、變化等。

六角鼠年鐵人賽 Week 34 - Design Pattern - Singleton

首頁 Kai 個人技術 Hackmd

tags: Design Pattern,w3HexSchool