策略模式與工廠模式比較
這段時間看了一些設計模式,看到策略模式與工廠模式的時候,總是感覺他們很相似,不要區分,到具體的場景了你可能還在徘徊到底用工廠還是策略呢?這幾天就想寫一篇關於策略模式與工廠模式區別的文章,但一直沒思路,昨天跟淘寶mm聊了聊,今天早上思路頓時開闊。
當時我在說明策略模式與工廠模式區別的時候舉了一個例子。說你要去買件衣服,給你50塊錢,策略模式的做法就是去京東、噹噹、淘寶、卓越等網上去看,然後決定要買那一件。而工廠模式的做法確實,告訴系統我需要用50塊錢買件衣服,到底他去噹噹、淘寶、京東、卓越你不關心,你只需要50塊錢的一件衣服。淘寶mm一語道出工廠相當於黑盒子,策略相當於白盒子。呵呵,佩服。總結得很精煉。今天早上醒來就在想這問題,老感覺昨天自己的比喻有點繞在概念之中,別人可能不認真分析可能還是很難理解他們的區別。所以就重新設計了一個小例項。
工廠模式:有一天你決定去吃披薩,一看選單,哦,種類很多呀,你就點了個培根披薩,過了二十分鐘,你的披薩就來了就可以吃到了。但這個披薩是怎麼做的,到底面粉放了多少,培根放了多少,佐料放了多少,有多少到工序,你是不需要管的,你需要的是一個美味培根披薩。
策略模式:同樣還是在披薩店,你要一個培根披薩,老闆說想吃自己去做吧。原料有培根、麵粉、佐料。工序有1、2、3工序,你自己去做吧。然後你就需要自己去做,到底放多少培根,放多少麵粉,放多少佐料,這都你自己來決定,工序1、2、3,你是怎麼實現的,都你自己決定。最後你得到了披薩。
一般情況下,策略模式是為了解決的是策略的切換與擴充套件,更簡潔的說是定義策略族,分別封裝起來,讓他們之間可以相互替換,策略模式讓策略的變化獨立於使用策略的客戶。
想到這裡,我突然想雲端計算跟傳統電腦模式的聯絡。
傳統的電腦模式,你需要寫程式,你得自己去裝個eclips,
而云計算,我需要寫程式,雲就跟你說,親這裡有eclips,你可以直接用了。你需要看電影,雲就跟你說,親,這裡有pplive,你可以直接看電影,你需要美圖,雲說,親,這裡有美圖秀秀,能幫你的照片變得很漂亮的哦。這就是典型的工廠模式。