設計模式之(四)——工廠模式(Factory Pattern)

1、簡單工廠


 

簡單工廠,並非是設計模式,而是一種編程習慣,只是把產生對象的方法封裝到一個工廠類裏面去而已。

根據生產對象的參數值,生產不同的對象。像DateFormat也是使用簡單工廠。

優勢很明顯,邏輯簡單,缺陷也很明顯,一個類負責了所有產品的創建。一旦出現更新。整個類維護的邏輯會相當複雜。

 

2、工廠方法

相對於簡單工廠這種,抽象出了一個工廠抽象類,不是隻有一個簡單工廠類負責所有產品的創建,交由子類的創建。

 

3、抽象工廠

抽象工廠是一個類裏面有多個工廠方法。

 

現在是在想,抽象工廠能直接用工廠方法替代嗎?

最大的不同在於工廠方法一般只有一個工廠方法和重載的工廠方法,當不是一個普通簡單的對象的時候,而如果是多個產品等級的話需要使用的是抽象工廠。

 

讀不懂的東西,多讀幾次,自己動手畫畫圖,敲敲改改代碼,總能理解裏面的含義。

 

https://stackoverflow.com/questions/5739611/differences-between-abstract-factory-pattern-and-factory-method

工廠方法就只是一個方法,我們可以在子類裏面重寫。使用的是繼承並且依賴於子類對期望的對象示例進行處理。

抽象工廠是一個對象,擁有多個工廠方法。

 

 

爲什麼HeadFirst介紹的時候,能讓你看不懂兩者的區別是因爲,抽象工廠使用了依賴倒置。我們接下來如果把依賴倒置放到

工廠方法裏面,還有把抽象工廠移除依賴倒置的使用,其實就很容易看出差差別在哪裏了。

 

我現在想明白爲什麼我在看HeadFirst的過程中,很難區分出工廠方法和抽象工廠間的區別。

因爲多了DI,依賴倒置的加入,新的東西的加入,會讓你把重心放到了新的東西上面,而忘記了區分最原始的區分。

HeadFirst的書在後面也是一樣,寫到代理的時候,會加入RMI。

我對比着《設計模式之禪》 看,好的地方在於比喻多,有模式之間的比較,國人能寫這樣的書,其實模式是吃透了,其實還是不錯的。

缺點就是有些地方沒有深究進去。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章