這三大工廠都是製造產品的地方,究竟有何差別?
這便是這次所要討論的主題
在此之前,我們先來復習這三個工廠吧
- Simple Factory:一個工廠生產出一個產品,這些產品是屬於同一類的
- Factory Method:工廠所生產的方式會被延到 subclass 去實作,一個產品會對應到一種生產方式,而一個生產方式則會由一個 subclass 的工廠去實作
- Abstract Factory:會生成一系列相關但不同類的產品,在實作上常利用 Factory Method 來實作
然而,Factory Method 由於把實作細節延到 subclass,因此只需要新增一個 subclass 實作定義好的生產 method 就行了,完全不需要更改原本的實作
至於 Abstract Factory 則和 Factory Method 很像,同樣都會把工廠抽象化,實作細節會延到 subclass,但不同的是 Abstract Factory 主要是針對一系列相關但不同類的產品
根據這些差異,小編建議一些各個使用時機:
- 若產品的種類在初期已經定義明確,爾後不太會有太大的更動,建議用 Simple Factory 即可,簡單明瞭且效能會比較好
- 若產品種類在初期十分模糊,則用 Factory Method,可以帶來比較大的彈性,不過就會產生許多實作檔(.cpp)和標頭檔(.h)
- 針對一系列相關但不同類的產品,當然是使用 Abstract Factory
Design Patterns 裡面的三個工廠總算介紹完了
接下來還會有更多更有趣的 Patterns介紹給大家
拭目以待吧 :D
Reference:
沒有留言:
張貼留言