架构师进阶之独孤九剑:设计模式详解
我們繼續(xù)架構(gòu)師進階之獨孤九劍進階,目前我們?nèi)匀辉诘谝浑A段:程序設(shè)計和開發(fā)環(huán)節(jié)。
“
設(shè)計模式不僅僅只是一種規(guī)范,更多的是一種設(shè)計思路和經(jīng)驗總結(jié),目的只有一個:提高你高質(zhì)量編碼的能力。以下主要分為三個環(huán)節(jié):為什么要用設(shè)計模式、設(shè)計模式的分類,以及最后推薦大家三本設(shè)計模式相關(guān)的書籍,希望對你有所幫助。
為什么要使用設(shè)計模式
1、設(shè)計模式是前人根據(jù)經(jīng)驗總結(jié)出來的,使用設(shè)計模式,就相當(dāng)于是站在了前人的肩膀上。
2、設(shè)計模式使程序易讀。熟悉設(shè)計模式的人應(yīng)該能夠很容易讀懂運用設(shè)計模式編寫的程序。
3、設(shè)計模式能使編寫的程序具有良好的可擴展性,滿足系統(tǒng)設(shè)計的開閉原則。比如策略模式,就是將不同的算法封裝在子類中,在需要添加新的算法時,只需添加新的子類,實現(xiàn)規(guī)定的接口,即可在不改變現(xiàn)有系統(tǒng)源碼的情況下加入新的系統(tǒng)行為。
4、設(shè)計模式能降低系統(tǒng)中類與類之間的耦合度。比如工廠模式,使依賴類只需知道被依賴類所實現(xiàn)的接口或繼承的抽象類,使依賴類與被依賴類之間的耦合度降低。
5、設(shè)計模式能提高代碼的重用度。比如適配器模式,就能將系統(tǒng)中已經(jīng)存在的符合新需求的功能代碼兼容新的需求提出的接口 。
6、設(shè)計模式能為常見的一些問題提供現(xiàn)成的解決方案。
7、設(shè)計模式增加了重用代碼的方式。比如裝飾器模式,在不使用繼承的前提下重用系統(tǒng)中已存在的代碼。
設(shè)計模式分類和作用
1.總體來說設(shè)計模式分為三大類:
2.創(chuàng)建型模式的作用:
創(chuàng)建型模式,顧名思義就是創(chuàng)建對象的模式,對對象實例化過程進行了抽象。它們幫助一個系統(tǒng)獨立于如何創(chuàng)建、組合和表示它的那些對象。
3.創(chuàng)建型模式,共五種:
-
工廠方法模式
-
抽象工廠模式
-
單例模式
-
建造者模式
-
原型模式
1)工廠方法模式:定義一個用于創(chuàng)建對象的接口,讓子類決定實例化哪一個類,也就是將創(chuàng)建工作推遲到子類來完成。
2)抽象工廠模式:提供一個創(chuàng)建一系列相關(guān)或者相互依賴對象的接口,而無需指定它們(指的是這些相關(guān)或者相互依賴的對象)的具體的類。
3)生成器模式:將一個復(fù)雜對象的構(gòu)建和它的表示相分離,使得同樣的構(gòu)建過程可以創(chuàng)建出不同的表示。
4)原型模式:用原型實例指定創(chuàng)建對象的種類,并且通過拷貝這些原型創(chuàng)建新的對象。
5)單例模式:保證一個類僅有一個實例,并提供一個訪問它的全局訪問點。換句話來說就是,單例模式通過將單例類的構(gòu)造器訪問修飾符設(shè)置為private,禁止客戶直接通過new的方式來實例化單例類;與此同時,單例類提供一個靜態(tài)訪問點來獲取到通過內(nèi)部創(chuàng)建出的唯一單例類對象。
4.一般創(chuàng)建型設(shè)計模式面試必問:
建議以下四類都熟練掌握
-
工廠方法模式
-
抽象工廠模式
-
單例模式
-
建造者模式
5.結(jié)構(gòu)型模式,共七種:
-
適配器模式
-
裝飾器模式
-
代理模式
-
外觀模式
-
橋接模式
-
組合模式
-
享元模式
6.結(jié)構(gòu)型模式的作用:
結(jié)構(gòu)型模式主要用于描述如何組合類和對象以獲得更大的結(jié)構(gòu)。其中,結(jié)構(gòu)型類模式采用繼承機制來組合接口和實現(xiàn),而結(jié)構(gòu)型對象模式則采用組合/聚合方式來組合對象以實現(xiàn)新功能,因為它可以在運行時刻改變對象組合關(guān)系,所以對象組合方式具有更大的靈活性,這種機制是無法通過靜態(tài)類組合來實現(xiàn)的。
7.結(jié)構(gòu)型模式簡介:
1.適配器模式:將一個類的接口轉(zhuǎn)換成客戶希望的另外一種接口,這樣就能實現(xiàn)已有接口的復(fù)用。適配器主要有類適配器和對象適配器兩種實現(xiàn)方式,通常情況下,推薦優(yōu)先使用對象適配器方式。
2.橋接模式:將抽象部分與實現(xiàn)部分分離,使它們都可以獨立地變化。它主要用于應(yīng)對多維度變化點問題,通過對象組合的方式,可以極大地減少子類的數(shù)目,同時還能讓不同維度獨立擴展變化。
3.組合模式:將對象組合成樹形結(jié)構(gòu)以表示“整合-部分”的層次結(jié)構(gòu),從而使得用戶對單個對象和組合對象的使用具有一致性,也就是客戶端能夠透明地?zé)o區(qū)別地操作兩者。
4.裝飾模式:動態(tài)地給一個對象添加一些額外的職責(zé),就增加功能來說,裝飾模式相比生成子類更為靈活。
5.外觀模式:為子系統(tǒng)中的一組接口提供一個一致的接口,外觀模式定義了一個高層接口,這個接口使得這一子系統(tǒng)更加容易使用。這樣原來需要客戶直接與復(fù)雜的子系統(tǒng)打交道、交互,現(xiàn)在這一過程將完全將交由外觀對象來完成,極大地方便了客戶端的調(diào)用。
6.享元模式:運用共享技術(shù)有效地支持大量細粒度的對象。享元模式關(guān)鍵是將對象的內(nèi)部狀態(tài)和外部狀態(tài)分離,盡可能地對“穩(wěn)定”的內(nèi)部狀態(tài)進行共享,而將會隨運用場景而改變的狀態(tài)通過外部狀態(tài)傳入。
7.代理模式:為其他對象提供一種代理以控制對這個對象的訪問。主要是在客戶端和目標(biāo)對象間增加一層間接層,通過這個間接層來完成對目標(biāo)對象的種種控制操作,所以也就形成了不同功能類型的代理呢,比如遠程代理、保護代理和虛代理等等。
8.行為型模式,共十一種:
-
策略模式
-
模板方法模式
-
觀察者模式
-
迭代子模式
-
責(zé)任鏈模式
-
命令模式
-
備忘錄模式
-
狀態(tài)模式
-
訪問者模式
-
中介者模式
-
解釋器模式
9.行為模式的作用:
行為型模式設(shè)計到算法和對象間的職責(zé)分配,不僅描述對象或類的模式,還描述它們之間的通信方式,刻劃了運行時難以跟蹤的復(fù)雜的控制流,它們將你的注意力從控制流轉(zhuǎn)移到對象間的關(guān)系上來。
設(shè)計模式書籍推薦
1.第一本:Head First設(shè)計模適合式
適合:設(shè)計模式入門
2.第二本:設(shè)計模式
適合:有一定的設(shè)計模式基礎(chǔ)之后再看
3.第三本:敏捷軟件開發(fā)
適合:對設(shè)計模式以及敏捷的了解,名字叫敏捷軟件開發(fā),實則主要講解了大量設(shè)計模式。
推薦以上的三本設(shè)計模式相關(guān)的書籍,順序可以從上往下看,出入門到深入,也許效果會更好。
總結(jié)
以上是生活随笔為你收集整理的架构师进阶之独孤九剑:设计模式详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 分布式队列编程优化篇
- 下一篇: 设计模式实践及总结