大話23種設(shè)計(jì)模式

本篇文章為一個(gè)系列,主要深入淺出的談?wù)勗O(shè)計(jì)模式設(shè)計(jì),以方便我們?cè)陂_(kāi)發(fā)時(shí)候真正使用,而非為了面試才去學(xué)習(xí)。

1.設(shè)計(jì)模式是什么?

答:設(shè)計(jì)模式是一套被反復(fù)套用并被大部分人認(rèn)可的代碼設(shè)計(jì)經(jīng)驗(yàn)的一個(gè)總結(jié)。引入設(shè)計(jì)模式可以增強(qiáng)代碼性,保證代碼的可靠性。

2.設(shè)計(jì)模式遵循的六大原則是什么,分別是什么意思?

答:六大原則是單一職責(zé)原則、開(kāi)閉原則、里氏替換原則、依賴倒置原則、接口隔離原則、迪米特法則,這些原則其實(shí)不僅僅是設(shè)計(jì)模式要遵循的,我們寫(xiě)code也應(yīng)該遵循的。

單一職責(zé)原則:一個(gè)類應(yīng)該有且只有一個(gè)變化的原因

開(kāi)閉原則:對(duì)修改關(guān)閉對(duì)擴(kuò)展開(kāi)放

里氏替換原則:引用基類的地方必須能透明地使用其子類的對(duì)象

依賴倒置原則:針對(duì)接口編程而非實(shí)現(xiàn)細(xì)節(jié)

接口隔離原則:客戶端不應(yīng)該依賴它不需要的接口而應(yīng)該建立在最小接口上

迪米特法則:一個(gè)對(duì)象應(yīng)當(dāng)對(duì)其他對(duì)象有盡可能少的了解

3.23種設(shè)計(jì)模式分類有哪些,每個(gè)分類都有哪些設(shè)計(jì)模式?

答:設(shè)計(jì)模式分為創(chuàng)建型模式、結(jié)構(gòu)型模式、行為型模式三種,所謂創(chuàng)建型模式就是表示代替new方法動(dòng)態(tài)創(chuàng)建對(duì)象的一個(gè)思想,結(jié)構(gòu)型模式就是涉及到如何組合類和對(duì)象以獲得更大的結(jié)構(gòu)的,行為型模式對(duì)在不同的對(duì)象之間劃分責(zé)任和算法的抽象化。

創(chuàng)建型模式五種,分別是工廠模式、抽象工廠模式、單例模式、建造者模式、原型模式(*)。

工廠模式:工廠方法代替new操作的一種模式

抽象工廠方法:為創(chuàng)建一組相關(guān)或相互依賴的對(duì)象提供一個(gè)接口而無(wú)需指定它們的具體類

單例模式:指系統(tǒng)運(yùn)行時(shí)只存在一個(gè)這個(gè)類型的對(duì)象

建造者模式:將一個(gè)復(fù)雜的對(duì)象的構(gòu)建與它的表示分離,使得同樣的構(gòu)建過(guò)程可以創(chuàng)建不同的表示

原型模式:使用原型實(shí)例指定待創(chuàng)建對(duì)象的類型,并且通過(guò)復(fù)制這個(gè)原型來(lái)創(chuàng)建新的對(duì)象

結(jié)構(gòu)型模式有七種,分別是適配器模式、裝飾器模式、代理模式(*)、外觀模式、橋接模式、組合模式、享元模式。

適配器模式:讓那些接口不兼容的類可以一起工作

裝飾器模式:對(duì)已經(jīng)存在的某些類進(jìn)行裝飾,以此來(lái)擴(kuò)展一些功能

代理模式:某一個(gè)對(duì)象提供一個(gè)代理對(duì)象,并由代理對(duì)象控制對(duì)原對(duì)象的引用,分為動(dòng)態(tài)代理與靜態(tài)代理

外觀模式(Facade):向客戶端提供了一個(gè)客戶端可以訪問(wèn)系統(tǒng)的接口

橋接模式:抽象部分與它的實(shí)現(xiàn)部分分離,使它們都可以獨(dú)立地變化

組合模式:將對(duì)象組合成樹(shù)形結(jié)構(gòu)以表示部分-整體的層次結(jié)構(gòu),使得用戶對(duì)單個(gè)對(duì)象和組合對(duì)象使用具有一致性

享元模式:運(yùn)用共享技術(shù)有效地支持大量細(xì)粒度的對(duì)象

行為型模式有11種,分別是策略模式(*)、模板方法模式、觀察者模式(*)、迭代子模式、責(zé)任鏈模式(*)、命令模式(*)、備忘錄模式、狀態(tài)模式(*)、訪問(wèn)者模式、中介者模式(*)、解釋器模式。

策略模式:一個(gè)類的行為或其算法可以在運(yùn)行時(shí)更改

模板方法模式:定義一個(gè)操作中算法的框架,而將一些步驟延遲到子類中

觀察者模式:一個(gè)對(duì)象被修改時(shí),則會(huì)自動(dòng)通知它的所有依賴對(duì)象

迭代子模式:可以順序地訪問(wèn)一個(gè)聚集中的元素而不必暴漏聚集的內(nèi)部表象

責(zé)任鏈模式:很多對(duì)象由每一個(gè)對(duì)象對(duì)其下家的引用而連接起來(lái)形成一條鏈

命令模式:請(qǐng)求以命令的形式包裹在對(duì)象中,并傳給調(diào)用對(duì)象

備忘錄模式:在不破壞封閉的前提下,捕獲一個(gè)對(duì)象的內(nèi)部狀態(tài),并在該對(duì)象之外保存這個(gè)狀態(tài)

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

訪問(wèn)者模式:數(shù)據(jù)操作與數(shù)據(jù)結(jié)構(gòu)分離的設(shè)計(jì)模式

中介者模式:用一個(gè)中介對(duì)象來(lái)封裝一系列的對(duì)象交互

解釋器模式:把事物高頻率的特征和符號(hào)都通過(guò)解釋器來(lái)解釋,并加以組合處理

其中帶(*)表示經(jīng)常會(huì)用到的,有什么問(wèn)題請(qǐng)隨時(shí)留言,謝謝??!

最后編輯于
?著作權(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)容