在講解簡單工廠模式之前,有必要先了解一下oo的一些原則
1.ocp(開閉原則,open-closed principle):乙個軟體的實體應當對擴充套件開放,對修改關閉。也就是說,對於乙個已有的軟體,如果需要擴充套件,應當在不需修改
已有**的基礎上進行。
2.dip(依賴倒轉原則,dependence inversion principle):要針對介面程式設計,不要針對實現程式設計。簡單點說,對於不同層次的程式設計,高層次暴露給低層次
的應當只是介面,而不是它的具體類。
3.lod(迪公尺特法則,law of demeter):只與你直接的朋友通訊,而避免和陌生人通訊。
設計模式,相信不少人或多或少的在開發和學習過程中都會有接觸到的,其實我接觸它的時間是挺早,但是具體的了解其中的意義,卻是一臉茫然。
由於工作的原因,針對這塊的需求越來越多,如何更好地進行代i碼設計,做好 擴充套件、復用、靈活高的程式,成為了乙個擺在我面前的大山,我不知道如何去使用它,這其實也是我本能的對於設計模式的一種恐懼心裡,從內心感覺它是很難的一件事情,這些事情困擾著我,當然當你壓力過大的時候,你或許會崩潰 或許會戰勝自己 的恐懼 迎難而上,而我在崩潰之前選擇了後者,至此 我要向設計模式發起猛烈的進攻,我可以掌控設計模式,我可以駕馭它,相信自己,你也可以,跟著我的腳步,走進設計模式 的世界中來的,好啦,開車啦 !!
一、工廠模式之簡單工廠
這個模式我相信 是使用最多的,我們可能在實際開發中已經使用到了,但是我們卻不知道它有乙個不錯的名稱---簡單工廠模式
學習知識之前 我們都應該問一下自己,更甚一點說,搞清楚狀況小子,別開小差,集中精力。let's go
學的是什麼知識?簡單工廠模式,可以是你的**更加容易維護、低耦合、物件集中管理
它解決了什麼問題?解決了如何更好地建立和維護物件,簡單說就是封裝物件的建立,當物件更換時,可以很方便的進行修改
怎麼樣學習它?學習方法,從定義、示例、最佳實踐中去學習
怎麼樣算是學會了?找到應用場景,並成功使用上模式
那麼我將以現在最流行的 章丘鐵鍋的 從**後的瘋狂擴張 到 亂象叢生的結局,來說一下這個簡單工廠,此舉例僅是為了理解工廠模式,
話說 章丘鐵鍋在沒有被**之前 那可能是全國眾多做鐵鍋的一家,沒有什麼其他特別之處,
這個做鐵鍋的都是以個人(家庭)為單位,進行做生意的,競爭可能還是很激烈吧,
自從**之後 訂單瘋狂增長,這樣問題就來了,面對這麼多的訂單,乙個是時間乙個是質量還有如何能做到符合客戶的要求,應該如何保證,結果是在龐大的利益面前,鐵鍋的質量直線下降,導致訂單量的極速回縮,買家投訴暴增,乙個章丘鐵鍋從此跌下神壇,
我們不難總結出問題的原因,沒有統一的管理,各種生產良莠不齊,導致問題的根源,我們無法去很好的保證這些個人做的鐵鍋的質量是否達到標準,此時鐵鍋就是我們要管理的物件,因為對它沒有進行統一管理,導致出現問題,不能及時解決,導致了乙個徹徹底底的失敗,沒有迴旋的餘地,這個事件究竟帶給我們什麼啟示呢,不妨細細的想一下
1、沒有統一管理
2、溝通沒有到位,可能導致做的和客戶要求的不一致
3、利益至上,沒有把握好質量關
其實就是類似這種模式,每個物件都是自己進行管理,這樣做的缺點就是客戶端嚴重依賴了具體物件,這樣就違反了ocp選擇,對擴充套件開放 對修改關閉,這樣每次都會new物件,完全把具體物件暴露給客戶端,當然這裡也違反了.dip,針對介面,不針對實現。
從上面的敘述中我們是否想到了有這麼乙個解決方案可以很好的解決此問題-----工廠應運而生
工廠遮蔽了建立細節,它保證你能得到你所需要的鐵鍋,你不需要知道如何去建立這個鐵鍋,你只要對工廠說 我需要乙個炒菜的鍋 那麼工廠就會給你這樣的乙個鍋,
那麼它的形式是什麼樣的,讓我們以上面示例的**形式去提現簡單工廠模式
1.定義鍋的介面,方法work 表示該鍋的具體用途(炒菜、煎炸)
2、分別實現炒菜和煎炸的鍋
3、重點來了,如何去建立具體的鍋呢,這時候簡單工廠模式提現了它存在的意義,如下所示
通過這種方式,很方便的建立所需要的具體的物件,通過不同的型別去選擇具體的實現物件,
這樣的模式在實際的開發中是經常見到的,在我們開發的專案中,很多地方都使用到了簡單工廠模式,
設計模式 工廠模式之簡單工廠模式
定義 由乙個工廠物件 工廠類 來指定建立某乙個產品類的例項。使用場景 客戶端只需傳入指定的引數即可,工廠類負責建立的物件較少 因為指定了傳入的引數 介面類 本想用iphone命名的,見諒 public inte ce phone實現介面類 public class huaweiphone imple...
設計模式 工廠模式之簡單工廠
工廠模式可以分為 簡單工廠模式 普通工廠模式 靜態工廠模式 抽象工廠模式 簡單工廠模式 就是如何去例項化物件的問題,對於很容易變化的問題,應該考慮用乙個單獨的類來做這個創造例項的過程,這個單獨的類就是工廠 例子 通過簡單工廠建立各種圖形的實現過程 簡單工廠模式建立步驟 建立乙個介面 例 圖形介面 建...
設計模式 工廠模式之簡單工廠
我們常見的設計模式,大致可以分為三大類 建立型 結構性 行為型。工廠模式,屬於建立型。工廠模式到底起的是什麼作用呢?概括來說就是解耦。當某一類物件需要頻繁建立的時候,就會和程式產生比較大的耦合,在物件初始化屬性較多時,工廠模式可以較少這種耦合,這就是他的作用。一般情況下根據場景不同,工廠模式有幾種不...