設(shè)計(jì)模式

一、 六大設(shè)計(jì)原則

1. 單一職責(zé)原則 (Single Responsibility Principle, SRP)

2. 李氏替換原則(Liskov Substitution Principle, LSP)

  • 子類(lèi)可以重載父類(lèi)的方法
  • 父類(lèi)的方法輸入?yún)?shù)寬度必須比子類(lèi)(重載或覆寫(xiě))的寬度大,這樣用子類(lèi)去調(diào)用方法時(shí)會(huì)調(diào)用父類(lèi)方法執(zhí)行
  • 父類(lèi)的方法返回參數(shù)寬度必須必子類(lèi)(重載或覆寫(xiě))的寬度大

3. 依賴倒置原則 (Dependence Inversion Principle, DIP)

何為正置何為倒置:正置,可以理解成類(lèi)之間的依賴是實(shí)實(shí)在在實(shí)例間的依賴,就是我們現(xiàn)實(shí)生活中的思維。而倒置是程序世界里,面對(duì)的是抽象類(lèi)或者接口這種抽象的理念,就是我們通常所說(shuō)的面向接口編程。通過(guò)將依賴倒置,可以實(shí)現(xiàn)模塊間的松耦合,降低多成員并行開(kāi)發(fā)的風(fēng)險(xiǎn)和效率,提高系統(tǒng)的穩(wěn)定性。

  • 構(gòu)造函數(shù)注入
  • setter方法注入
  • 接口方法注入

4. 接口隔離原則

接口的方法盡量少。與單一職責(zé)所不同的是,單一職責(zé)通常是業(yè)務(wù)上的劃分,注重的是職責(zé)。接口隔離原則是盡量使用專(zhuān)門(mén)的接口,接口中的方法盡量少。

5. 迪米特原則 (Law of Demeter, LOD)

類(lèi)間解耦,對(duì)所依賴的類(lèi)知道的越少越好。要求累盡量?jī)?nèi)聯(lián),提供盡量少的public方法。

6. 開(kāi)閉原則

對(duì)拓展開(kāi)放,對(duì)修改關(guān)閉。

二、 設(shè)計(jì)模式

模版方法模式

image.png

父類(lèi)提供幾個(gè)抽象方法,并定義一個(gè)final 方法,子類(lèi)自定義實(shí)現(xiàn)抽象方法。
主要是針對(duì)某一特定的多方法執(zhí)行順序,但是多方法需要不同的處理方法。

責(zé)任鏈模式

image.png

結(jié)合模版方法模式。設(shè)置調(diào)用鏈處理方式。
通過(guò)設(shè)置下級(jí)節(jié)點(diǎn)的方式,組裝成一個(gè)調(diào)用鏈?!咀⒁庹{(diào)用鏈不宜過(guò)長(zhǎng),會(huì)導(dǎo)致業(yè)務(wù)代碼過(guò)于負(fù)責(zé),調(diào)試?yán)щy等問(wèn)題】一個(gè)需求只管將請(qǐng)求發(fā)送給第一個(gè)節(jié)點(diǎn),就會(huì)返回一個(gè)結(jié)果,不知道是誰(shuí)具體處理。處理器也只負(fù)責(zé)處理接收到的請(qǐng)求,不知道請(qǐng)求是誰(shuí)發(fā)送的。

裝飾器模式

image.png

類(lèi)似代理模式。與原始類(lèi)實(shí)現(xiàn)同一接口,并通過(guò)關(guān)聯(lián)原始子類(lèi)對(duì)象,加入自己的私有方法,重寫(xiě)父類(lèi)方法來(lái)對(duì)方法進(jìn)行增強(qiáng)。

策略模式

image.png

策略類(lèi),錦囊類(lèi),錦囊類(lèi)依賴策略類(lèi)

適配器模式

迭代器模式

image.png

組合模式

組合模式又叫合成模式,有時(shí)又叫部分-整體模式,主要用來(lái)描述部分-整體的關(guān)系。
將對(duì)象組合成樹(shù)形結(jié)構(gòu)以表示“部分-整體”的層次結(jié)構(gòu),使得用戶多單個(gè)對(duì)象和組合對(duì)象的使用具有一致性。


image.png

觀察者模式

image.png

門(mén)面模式(Facade Pattern)

門(mén)面模式,也叫外觀模式。
定義:要求一個(gè)子系統(tǒng)的外部與其內(nèi)部的通信必須通 過(guò)一個(gè)統(tǒng)一的對(duì)象進(jìn)行。門(mén)面模式提供一個(gè)高層次的接口,使得子系統(tǒng)更易于使用。


image.png

備忘錄模式

image.png

訪問(wèn)者模式

image.png

通過(guò)一個(gè)visitor接口定義訪問(wèn)者,并設(shè)置可以訪問(wèn)的類(lèi)型。
element類(lèi)設(shè)置自己可以被哪個(gè)訪問(wèn)者訪問(wèn)。

狀態(tài)模式

當(dāng)一個(gè)對(duì)象內(nèi)在狀態(tài)改變時(shí)允許其改變行為,這個(gè)對(duì)象看起來(lái)像改變了其類(lèi)。


image.png

解釋器模式

享元模式

image.png

享元模式(Flyweight Pattern)是池技術(shù)的重要實(shí)現(xiàn)方式。
使用共享對(duì)象可有效地支持大量的細(xì) 粒度的對(duì)象。

橋梁模式

image.png

解決問(wèn)題:繼承的缺點(diǎn),強(qiáng)入侵!
Father類(lèi)有一個(gè)方法A,Son繼承了這個(gè)方法,然后GrandSon也繼承了這個(gè)方法, 問(wèn)題是突然有一天Son要重寫(xiě)父類(lèi)的這個(gè)方法。GrandSon要用從Father 繼承過(guò)來(lái)的方法A,如果你修改了,那就要修改Son和GrandSon之間的關(guān)系,風(fēng)險(xiǎn)很大。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容