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