設計模式——淺談工廠模式
工廠模式是最常用的設計模式之一,用好了,代碼優雅,可維護性高,對系統設計會上一個台階
為什麼這麼說,因為工廠模式可以牽扯出抽象工廠模式,也有大家都會聊到的簡單工廠模式
我們要了解一點,23中設計模式中,不包含簡單工廠模式,之所以大家會去聊這個,四個字,漸進明細
通過對簡單工廠模式的了解,我們引入工廠這個詞,不然一個寫代碼的,天天給他講工廠,工廠,工廠,西廠,東廠,會暈
同時,通過逐步的深入,從簡單工廠,到工廠模式,再到抽象工廠,漸進明細的過程,逐步深入的理解,比較優劣,擇優而為我們所用。
試想我們遇到以下情景,我們該怎麼處理
在工作中,我們需要處理不同類型的文件,有音頻的,視頻的,圖片的,文本的。通過程序的處理,我們可以分別提取到不同的信息。
這種情況你準備怎麼處理
工作經驗少的同學默默的心理噗嗤一聲,看我5分鐘搞定
各個方法封裝,獨立,可隨處調用,面向對象三大特性,簡簡單單隨隨便便給你展現一臉
後來,系統變強壯了,業務增加了,要求同時也能處理郵件Email
是不是你這個時候開始修改代碼,增加一個方法,添加一個case,break;
如果後續陸陸續續好幾十種繼續增加,怎麼辦。程序的可維護性,可擴展性在哪裡?
開放-封閉原則在哪裡?
開放-封閉原則是只軟體實體(類,模塊,函數等等),應該可以擴展,但是不可修改
拋開所有原則,再增加5個,你這個類的代碼得有1000行了吧,那麼多case,break, 那天稍微不小心的改錯一個,是不是會引起巨震。
所以,我們開始進行修改,也就是我們接下來進入正題的 簡單工廠模式。
所謂的簡單工廠模式,是將一個具體類的實例化交給一個工廠方法來執行
1個點,敲黑板,重點來了
工廠方法來執行。首先需要一個工廠,還需要一個方法。一個方法來幹嘛?來實例化具體的類,具體的什麼類?具體的演算法類!
我們首先來定義一個抽象類
這個類告訴全世界,要實現我,就得實現我的方法,我們是強關係,我們是合成關係,我們是擁有關係,我們是鳥兒與翅膀的關係!
而且不準實現我,要實現,先繼承,要繼承,就得override我的所有方法
於是,不得已,要處理的類紛紛開始實現
文件處理類
圖片處理類
視頻處理類
音頻處理類
所有的處理類我們定義好了,如果後續,業務變更,需求增加,再添加什麼郵件啊,電話啊,其他什麼的,我們只需要繼續添加我們的類,而不是通過去添加方法,這樣每個類的單一職責原則是不是體現的很淋漓盡致了,如果單一職責覺得太書面,我們換個稱呼,單一功能原則!沒法再簡單了
所有的處理類已經Ready了,我們的重點工廠可以開始修建了
不要指指點點,不要指指點點,不要指指點點
我們就像項目過程一樣,漸進明細
這次介紹的是簡單工廠模式,簡單工廠重點是 簡單,工廠
後續增加業務的時候,我們只需要再加case,和對應的Handle類就好了
如何調用呢
是不是一下簡單明了,你要是Web程序,可以,要是CS程序,可以,要是WebAPI,也可以
易擴展,可維護
總結下
優點
1、擴展性高,如果想增加一個處理方式,只要擴展一個處理類就可以。
2、屏蔽實現,只關心處理的結果
3、帶你走進工廠模式
缺點
1、每次增加一個處理對象的時候,都需要增加一個處理類,還要同時告訴工廠,增加處理類型
2、增加了系統具體類的依賴
文章摘自博客園
中公優就業IT培訓,總有你想學的:http://xue.ujiuye.com
勤工儉學計劃,0元學IT!
http://www.ujiuye.com/zt/qgjx/?wt.bd=lsh11tt
找工作太難?我們來幫你一舉拿下!
http://www.ujiuye.com/zt/jycj/?wt.bd=lsh11tt


※iptables對比Netfilter
※「目標檢測」PVAnet原理
※SpringMVC詳解——參數綁定
※利用ES6的Promise.all實現至少請求多長時間
※spring boot / cloud異常處理思路
TAG:IT優就業 |
※設計模式之代理模式
※設計模式概念
※淺談遊戲設計模式分析
※社交產品設計模式
※每日一博丨淺談設計模式之建造者模式
※請設計你的商業模式
※反射與代理設計模式-動態代理設計模式
※淺談鐵路運行的舒適模式與冰雪模式
※商業模式羅盤—如何設計產品與解決方案
※摺疊式設計,兩種運動模式!小米生態鏈「智能走步機」評測
※基於模型的嵌入式軟體開發模式
※裝機模擬器好玩嗎 裝機模擬器玩法模式介紹
※設計模式之觀察者模式源碼分析及實踐
※設計師的思維模式之「如何把機械三維軟體結合平面設計」
※拍攝模式之Auto模式及曝光程序模式
※人工智慧技術改變商業模式的四種方式
※多邊平台式的商業模式
※PHP設計模式—服務定位器
※戰地模擬器特別行動模式玩法介紹
※創新工作模式 開創武裝工作新局