第一章 設計模式的原則及理解
接觸設計模式之前,全憑經驗與總結,接觸之後發覺已經有前人為你總結了許多可用的東西,設計模式應該說是乙個程式設計師高階的必經之路,我也是抱著學習的心態,將經驗,查閱的書籍資料,老師所教的東西,收集收集,整理整理,既是為自己後續翻閱用,也希望對讀者有點幫助。
定義
設計模式是指在軟體開發過程中,經過驗證的,用於解決在特定環境下重複出現的,特定問題的解決方案。
模式的原則
1、依賴倒置原則
(1)高層模組不應依賴底層模組,二者都應依賴抽象
(2)抽象不應該依賴於具體實現,具體實現依賴抽象
這個原則怎麼理解呢,舉乙個例子,在我的另一篇博文中提到記憶體模型的時候,有說到記憶體模型就是一種抽象,它是為了解決開發過程中,開發者不應因cpu不同,就需要去實現不同的多執行緒**,這裡高層模組就是多執行緒**,底層模組就是cpu(或者說cpu相關的操作集),cpu操作集的實現不可能因為你上層要做多執行緒,就不做指令的亂序,你上層多執行緒不可能因為你每個cpu的指令亂序實現不同我跟著多執行緒實現也不一樣,因此抽象出一層記憶體模型,提供了記憶體屏障相關的實現,隔離了高低層模組。抽象不依賴於具體實現是說,我們是要都依照記憶體模型的編碼要求來開發,而不是你開發是乙個樣,我開發是乙個樣,抽象會隨著我們不同而改變。
2、開放封閉原則
乙個類應該對擴充套件開放,對修改關閉
字面理解即可,比如我們乙個基類,我們擴充套件可以通過繼承,在子類中進行擴充套件,但盡量避免對類本身做修改來達到我們的需求。
3、面向介面程式設計
(1)不將變數型別宣告為某個特定的具體類,而是宣告為某個介面;
(2)客戶程式無需獲知物件的具體型別,只需要知道物件所具有的介面
(3)減少系統中各部分的依賴關係,從而實現高內聚,松耦合的型別設計方案
4、封裝變化點
(1)將穩定點和變化點分離,擴充套件修改變化點。讓穩定點和變化點的實現層次分離
關於這一項,必須要強調的就是穩定點和變化點的分離,模式設計的思路,基本上都是要先去區分穩定點和變化點,如果沒有變化點,或沒有穩定點,就沒有用設計模式的必要,區分出穩定點和變化點之後,再去抽象出隔離層,或是封裝變化點,或封裝穩定點。
5、單一職責原則
乙個類應僅有乙個引起它變化的原因
6、黎克特制替換原則
子型別必須能夠替換掉它的父型別,主要出現在子類覆蓋父類的實現,原來使用父類的程式,可能出現錯誤,覆蓋了父類方法,卻沒實現父類方法的職責
7、介面隔離原則
(1)不應該強迫客戶依賴於他們不用的方法;-----對客戶不用的介面,不開放出去
(2)一般用於處理乙個類擁有比較多的介面,這些介面設計到很多職責
8、物件組合優於類繼承
繼承耦合度高,組合耦合度低。
一般情況下,如果能明確找到以下的其中一點,都可以使用設計模式
所以我們學習設計模式的目的,並不是為了去死記硬背它們,而是在學習已有的設計模式的過程中,理解模式設計的原子,能在已使用的設計模式中寫擴充套件,能在後續的工作中面對複雜需求,盡可能抽象出已有的設計模式,能在重構中開發自己的設計模式。
設計模式 第一章工廠模式
乙個物件應該只包含單一的職責,並且該職責被完整的封裝到乙個類中 軟體實體應該對擴充套件開放,對修改關閉 所有引用基類的地方必須能透明的使用其子類物件 高層模組不應該依賴底層模組,他們都應該依賴抽象,抽象不應該依賴細節,細節應該依賴於抽象 客戶端不應該依賴他那些不需要的介面 優先使用物件組合,而不是通...
第一章 設計模式分類
工廠方法模式 factory pattern 抽象工廠模式 abstract factory pattern 單例模式 singleton pattern 建造者模式 builder pattern 原型模式 prototype pattern 介面卡模式 adapter pattern 裝飾器模式...
大話設計模式 第一章 簡單工廠模式
實現乙個計算器控制台程式 活字印刷 第一,要改,只需改要改之字,此為可維護 第二,這些字用完依然可用,此為可復用 第三,若要加字只需另刻再加入即可,此為可擴充套件 第四,可橫排可豎排,此為靈活性好 複製vs復用 將計算和顯示分開 即將業務邏輯和介面邏輯分開 public class operatio...