本篇文章為一個(gè)系列,主要深入淺出的談?wù)勗O(shè)計(jì)模式設(shè)計(jì)羞反,以方便我們在開發(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é)原則掸驱、開閉原則肛搬、里氏替換原則、依賴倒置原則毕贼、接口隔離原則温赔、迪米特法則,這些原則其實(shí)不僅僅是設(shè)計(jì)模式要遵循的鬼癣,我們寫code也應(yīng)該遵循的陶贼。
單一職責(zé)原則:一個(gè)類應(yīng)該有且只有一個(gè)變化的原因
開閉原則:對修改關(guān)閉對擴(kuò)展開放
里氏替換原則:引用基類的地方必須能透明地使用其子類的對象
依賴倒置原則:針對接口編程而非實(shí)現(xiàn)細(xì)節(jié)
接口隔離原則:客戶端不應(yīng)該依賴它不需要的接口而應(yīng)該建立在最小接口上
迪米特法則:一個(gè)對象應(yīng)當(dāng)對其他對象有盡可能少的了解
3.23種設(shè)計(jì)模式分類有哪些,每個(gè)分類都有哪些設(shè)計(jì)模式待秃?
答:設(shè)計(jì)模式分為創(chuàng)建型模式骇窍、結(jié)構(gòu)型模式、行為型模式三種锥余,所謂創(chuàng)建型模式就是表示代替new方法動(dòng)態(tài)創(chuàng)建對象的一個(gè)思想腹纳,結(jié)構(gòu)型模式就是涉及到如何組合類和對象以獲得更大的結(jié)構(gòu)的,行為型模式對在不同的對象之間劃分責(zé)任和算法的抽象化。
創(chuàng)建型模式五種嘲恍,分別是工廠模式足画、抽象工廠模式、單例模式佃牛、建造者模式淹辞、原型模式(*)。
工廠模式:工廠方法代替new操作的一種模式
抽象工廠方法:為創(chuàng)建一組相關(guān)或相互依賴的對象提供一個(gè)接口而無需指定它們的具體類
單例模式:指系統(tǒng)運(yùn)行時(shí)只存在一個(gè)這個(gè)類型的對象
建造者模式:將一個(gè)復(fù)雜的對象的構(gòu)建與它的表示分離俘侠,使得同樣的構(gòu)建過程可以創(chuàng)建不同的表示
原型模式:使用原型實(shí)例指定待創(chuàng)建對象的類型象缀,并且通過復(fù)制這個(gè)原型來創(chuàng)建新的對象
結(jié)構(gòu)型模式有七種,分別是適配器模式爷速、裝飾器模式央星、代理模式(*)、外觀模式惫东、橋接模式莉给、組合模式、享元模式廉沮。
適配器模式:讓那些接口不兼容的類可以一起工作
裝飾器模式:對已經(jīng)存在的某些類進(jìn)行裝飾,以此來擴(kuò)展一些功能
代理模式:某一個(gè)對象提供一個(gè)代理對象,并由代理對象控制對原對象的引用颓遏,分為動(dòng)態(tài)代理與靜態(tài)代理
外觀模式(Facade):向客戶端提供了一個(gè)客戶端可以訪問系統(tǒng)的接口
橋接模式:抽象部分與它的實(shí)現(xiàn)部分分離,使它們都可以獨(dú)立地變化
組合模式:將對象組合成樹形結(jié)構(gòu)以表示部分-整體的層次結(jié)構(gòu)滞时,使得用戶對單個(gè)對象和組合對象使用具有一致性
享元模式:運(yùn)用共享技術(shù)有效地支持大量細(xì)粒度的對象
行為型模式有11種叁幢,分別是策略模式(*)、模板方法模式、觀察者模式(*)遭赂、迭代子模式、責(zé)任鏈模式(*)、命令模式(*)仿滔、備忘錄模式、狀態(tài)模式(*)膝擂、訪問者模式亚斋、中介者模式(*)、解釋器模式拂募。
策略模式:一個(gè)類的行為或其算法可以在運(yùn)行時(shí)更改
模板方法模式:定義一個(gè)操作中算法的框架,而將一些步驟延遲到子類中
觀察者模式:一個(gè)對象被修改時(shí),則會(huì)自動(dòng)通知它的所有依賴對象
迭代子模式:可以順序地訪問一個(gè)聚集中的元素而不必暴漏聚集的內(nèi)部表象
責(zé)任鏈模式:很多對象由每一個(gè)對象對其下家的引用而連接起來形成一條鏈
命令模式:請求以命令的形式包裹在對象中,并傳給調(diào)用對象
備忘錄模式:在不破壞封閉的前提下,捕獲一個(gè)對象的內(nèi)部狀態(tài),并在該對象之外保存這個(gè)狀態(tài)
狀態(tài)模式:當(dāng)一個(gè)對象內(nèi)在狀態(tài)改變時(shí)允許其改變行為庭猩,這個(gè)對象看起來像改變了其類
訪問者模式:數(shù)據(jù)操作與數(shù)據(jù)結(jié)構(gòu)分離的設(shè)計(jì)模式
中介者模式:用一個(gè)中介對象來封裝一系列的對象交互
解釋器模式:把事物高頻率的特征和符號都通過解釋器來解釋,并加以組合處理
其中帶(*)表示經(jīng)常會(huì)用到的,有什么問題請隨時(shí)留言陈症,謝謝0!