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