? ?設(shè)計(jì)模式是提供給開發(fā)人員的一種標(biāo)準(zhǔn)方式,讓開發(fā)人員之間有一套共享詞匯,設(shè)計(jì)模式可以使人們深入理解面向?qū)ο蟮脑O(shè)計(jì)思想,提高軟件開發(fā)效率節(jié)約設(shè)計(jì)成本,一般情況下,一個(gè)模式說(shuō)明了幾個(gè)對(duì)象,組件或類,并且號(hào)詳細(xì)說(shuō)明了對(duì)象,組件或類的關(guān)系,職責(zé)以及他內(nèi)部之間的合作,學(xué)習(xí)設(shè)計(jì)模式可以使我們深入理解面向?qū)ο蟮脑O(shè)計(jì)思想,熟悉設(shè)計(jì)模式的軟件開發(fā)人員可以很快的把模式運(yùn)用到軟件設(shè)計(jì)中。
?? 設(shè)計(jì)模式主要分為三種類型:創(chuàng)建型、結(jié)構(gòu)型和行為型。
? ?? 創(chuàng)建型:
? 1. 單例模式:保證一個(gè)類只有一個(gè)實(shí)例,并提供一個(gè)訪問(wèn)他的全局訪問(wèn)點(diǎn)(單例模式分為懶漢式和餓漢式)
? 2.抽象工廠:提供一個(gè)接口,用于創(chuàng)建一系列相關(guān)或相互依存的對(duì)象,而無(wú)需為其指定特定類。
? 3.工廠方法:定義一個(gè)創(chuàng)建對(duì)象的接口,讓子類決定實(shí)例化哪個(gè)類工廠方法是類對(duì)子類的實(shí)例化延遲。
? 4.構(gòu)建模式:復(fù)制對(duì)象的構(gòu)建從其表示中分離出來(lái),以便相同的構(gòu)建過(guò)程可以創(chuàng)建不同的表示。
? 5.原型模式:使用原型實(shí)例指定要?jiǎng)?chuàng)建的對(duì)象類型,并復(fù)制這些原型以創(chuàng)建新對(duì)象。
? 行為型:
? 1.Iterator模式:提供一種方法,該方法可以順序地訪問(wèn)聚集對(duì)象的元素,而不公開對(duì)象的內(nèi)部表示形式。
? 2.觀察者模式:定義對(duì)象之間的一對(duì)多依賴關(guān)系。當(dāng)一個(gè)對(duì)象的狀態(tài)改變時(shí),所有依賴它的對(duì)象都會(huì)被通知自動(dòng)更新。
? 3.模板方法、模板模式:在操作中定義算法的骨架,并將某些步驟延遲到子類中,模板方法允許子類重新定義算法的某些特定步驟而不改變算法的結(jié)構(gòu)。
? 4.命令模式:將請(qǐng)求封裝為一個(gè)對(duì)象,這樣您就可以用不同的請(qǐng)求參數(shù)化客戶、隊(duì)列請(qǐng)求、記錄請(qǐng)求日志,并支持可撤銷的操作。
? 5.狀態(tài)、狀態(tài)模式:允許對(duì)象在其內(nèi)部狀態(tài)更改時(shí)更改其行為,并且該對(duì)象似乎已更改了他的類。
? 6.策略:定義一系列算法,逐一封裝,使之能夠相互替換。這種模式使得算法能夠獨(dú)立于用戶。
? 7.工作鏈模式:多個(gè)對(duì)象有機(jī)會(huì)處理該請(qǐng)求,從而避免了發(fā)送方和接收方之間的耦合關(guān)系。
? 8.中介模式:封裝一系列與中介對(duì)象的對(duì)象交互。
? 9.訪問(wèn)者模式:一種表示一個(gè)元素作用于對(duì)象結(jié)構(gòu)的操作,它允許您在不改變?cè)仡惖那闆r下定義作用于該元素的新操作。
? 10.解釋器模式:給定一種語(yǔ)言,定義其語(yǔ)法的表示,并定義一個(gè)解釋器,該解釋器使用該表示來(lái)解釋語(yǔ)言中的句子。
? 11.Memeno,備注模式:在不破壞對(duì)象的情況下捕獲對(duì)象的內(nèi)部狀態(tài),并將狀態(tài)保存在對(duì)象之外。
? 結(jié)構(gòu)型:
? 1.復(fù)合,復(fù)合模式:將對(duì)象組合成屬性結(jié)構(gòu),表達(dá)部分與整體的關(guān)系。復(fù)合使用戶一致地使用單個(gè)對(duì)象和復(fù)合對(duì)象。
? 2.外觀模式:為子系統(tǒng)中的一組接口提供一致的接口,提供高級(jí)接口,使子系統(tǒng)更易于使用。
? 3.代理:為其他對(duì)象提供代理以控制對(duì)此對(duì)象的訪問(wèn)
? 4.適配器,適配器模式:將一類接口轉(zhuǎn)換為客戶想要的另一個(gè)接口,并且適配器模式使得可能一起工作,因?yàn)榻涌诓患嫒?,不能一起工作?/span>
? 5.Decorator模式:動(dòng)態(tài)地向?qū)ο筇砑右恍╊~外的職責(zé)。對(duì)于添加的函數(shù),裝飾器模式比子類生成更靈活。
6.Bridge,橋模式:將抽象部分與他的實(shí)現(xiàn)部分相分離,使他們可以獨(dú)立的變化。
7.Flyweight,享元模式
?