一、簡介
設計模式是一套被反復使用、多數人知曉的、經過分類的、代碼設計經驗的總結。目的是為了代碼可重用性、讓代碼更容易被他人理解、保證代碼可靠性。
下圖為常用的23中設計模式,整個系列參考《Head First 設計模式》,加深印象,方便查閱。
因此博客中會引入書中的一些一些案例。
范圍 | 創建型模式 | 結構型模式 | 行為型模式 |
---|---|---|---|
類模式 | 工廠方法 | (類)適配器 | 模板方法、解釋器 |
對象模式 | 單例 原型 抽象工廠 建造者 | 代理 (對象)適配器 橋接 裝飾 外觀 享元 組合 | 策略 命令 職責鏈 狀態 觀察者 中介者 迭代器 訪問者 備忘錄 |
二、設計模式的六大原則
總原則:開閉原則
基本概念:當應用的需求改變時,在不修改軟件實體的源代碼或者二進制代碼的前提下,可以擴展模塊的功能,使其滿足新的需求。
理解:舉個例子,一款小說閱讀器伴隨著很多的翻頁動畫,但為了應對后期可能會增加新的翻頁動畫的情況,因此可以通過抽象類為翻頁動畫,由不同的子類去實現翻頁邏輯,達到實現翻頁動畫的目的。因此簡單的理解就是通過接口或者抽象類為定義一個抽象層,而將相同的可變因素封裝在相同的具體實現類中。
1、單一職責原則
基本概念:單一職責原則規定一個類應該有且僅有一個引起它變化的原因,否則類應該被拆分
2、里氏替換原則
基本概念:里氏替換原則主要闡述了有關繼承的一些原則,也就是什么時候應該使用繼承,什么時候不應該使用繼承,以及其中蘊含的原理。里氏替換原是繼承復用的基礎,它反映了基類與子類之間的關系,是對開閉原則的補充,是對實現抽象化的具體步驟的規范。子類可以擴展父類的功能,但不能改變父類原有的功能。
3、依賴倒轉原則
基本概念:這個是開閉原則的基礎,具體內容:面向接口編程,依賴于抽象而不依賴于具體。寫代碼時用到具體類時,不與具體類交互,而與具體類的上層接口交互,達到降低客戶與實現模塊之間的耦合。
理解:使用接口或者抽象類的目的是制定好規范和契約,而不去涉及任何具體的操作,把展現細節的任務交給它們的實現類去完成。
4、接口隔離原則
基本概念:這個原則的意思是:每個接口中不存在子類用不到卻必須實現的方法,如果不然,就要將接口拆分。使用多個隔離的接口,比使用單個接口(多個接口方法集合到一個的接口)要好。
5、迪米特法則
基本概念:一個類對自己依賴的類知道的越少越好。也就是說無論被依賴的類多么復雜,都應該將邏輯封裝在方法的內部,通過public方法提供給外部。這樣當被依賴的類變化時,才能最小的影響該類。
6、合成復用原則
基本概念:要求在軟件復用時,要盡量先使用組合或者聚合等關聯關系來實現,其次才考慮使用繼承關系來實現。
理解:舉個例子理解,電腦分為筆記本、臺式機,筆記本有各種顏色,臺式機也有各種顏色,在面向對象設計時,我們通常會按這個順序理解,但為達到服用,我們可以將顏色與電腦綁定即可。
三、設計原則:
- 找出應用中可能需要變化之處,把它們獨立出來,不要和那些不需要變化的代碼混在一起。
- 針對接口編程,而不是針對實現編程。
- 多用組合,少用繼承。
- 為了交互之間松耦合設計而努力。
- 類用該對擴展開發,對修改關閉。
- 要依賴抽象,不要依賴具體類。
四、設計模式:
下面對這些部分常用設計模式具體學習,目錄:
設計模式(二)策略模式
設計模式(三)觀察者模式
設計模式(四)裝飾模式
設計模式(五)工廠模式
設計模式(六)單件模式
設計模式(七)適配器模式
設計模式(八)代理模式
設計模式(九)建造者模式
計劃:
設計模式暫時記錄到這里,后面會計劃結合源碼深入學習