最近了解了一下抽象工廠設計模式,本來是想轉載一篇好的例子並且用C++實現的文章,也找到了一篇不錯的文章,無奈,突然不想轉載了。
看了幾個例子,汽車工廠那個舉得的確不怎麼樣,弄得我一頭霧水,倒是用C++實現的那篇文章舉得是川菜和魯菜不同菜系魚和紅燒肉的例子簡單明瞭,其實當我真正瞭解了抽象工廠模式到底是一個什麼模式的時候,腦子裏的例子變得數不勝數。
廢話不多說,列一下這篇文章想要說的幾點:
1.設計模式的理解
2.抽象工廠模式舉例和理解
3.抽象工廠模式的C++實現
1.設計模式的理解
之前轉載過一篇文章,好像經典的設計模式被默認成23個,分創建性設計模式5個,結構性設計模式7個和行爲型設計模式11個。雖然有些盲點不太清楚,但是既然設計模式是對應解決問題產生的,他們三類必然解決三類不同的問題。
2.抽象工廠模式舉例和理解
舉個例子吧,雖然本人喜歡微軟勝於蘋果,不過這個例子拿蘋果的東西舉例更好理解
舉例iphone5和iphone5s吧,衆所周知,iphone手機隨着升級換代硬件配置會越來越高。前者A6CPU IOS6系統後者A7CPU IOS6系統。
要說明兩個概念,產品族和產品等級結構,先上圖
比較懶,網上copy了個圖片,這兩個概念還是比較好理解,一個等級結構好比同一樣東西不同型號,比如A6和A7兩款CPU的對比,而產品族是一個完整的產品。
抽象工廠模式中有四個角色:
抽象工廠角色,具體工廠角色,抽象產品角色,具體產品角色。
先在此上copy圖片然後用iphone的例子理解一下。
不考慮細節問題,蘋果的整個工廠好比抽象工廠角色即abstract factory,其中生產CPU和OS的兩個工廠分別爲具體工廠concrete factory1生產CPU,兩個產品爲ProductA1 好比A6處理器,ProductA2好比A7處理器,下同IOS。可知abstract productA即IPHONE5,abstract productB爲IPHONE5S。此時,應用程序已經左手iPhone5右手iPhone5s了。
3.抽象工廠模式的C++實現
。。。過幾天寫