Gof設計模式概覽

一、概念:設計模式是指在軟件開發中,經過驗證的,用於解決在特定環境下、重複出現的、特定問題的解決方案。

二、組成,設計模式通常由以下部分組成:

■ 模式名稱
■ 環境和問題:描述在什麼場景下,出現什麼樣的特定的問題。
■ 解決方案
■ 效果:描述模式應用的效果,以及可能帶來的問題,或者使用中需要權衡的問題。

三、模式的種類:本次主要說的是Gof著作中的23種設計模式,GoF把它們分爲三類。
■ 創建型模式:抽象了對象實例化的過程,用來幫助創建對象的實例。
■ 結構型模式:描述如何組合類和對象以獲得更大的結構。
■ 行爲型模式:描述算法和對象間職責的分配。

四、怎麼了解每個模式?

在介紹每個模式時本該按照功能,基本結構,標準實現,使用場景及使用效果的步驟介紹。只是不可能在一篇介紹完所有的模式,所以在本文最後介紹每個模式的功能即可,具體的模式介紹將在接下來的章節詳細介紹。

五、功能介紹:

<一>創建型

1.單例模式:保證一個類僅有一個實例,並提供一個訪問它的全局訪問點。本質:控制實例的數目。

2.工廠方法模式:定義一個用於創建對象的接口,讓子類決定實例化哪一個類,Factory Method使一個類的實例化延遲到其子類。本質:延遲到子類來選擇實現。

3.抽象工廠模式:提供一個創建一系列相關或相互依賴對象的接口,而無需指定它們具體的類。本質:選擇產品簇的實現。

4.建造者模式:將一個複雜對象的構建與它的表示分離,使得同樣的構建過程可以創建不同的表示。本質:分離整體構建算法和部件構造。

5.原型模式:用原型實例指定創建對象的種類,並通過拷貝這些原型創建新的對象。本質:克隆生成對象。

<二>結構型

6.適配器模式:將一個類的接口轉換成客戶希望的另外一個接口。適配器模式使得原本由於接口不兼容而不能一起工作的那些類可以一起工作。本質:轉換匹配,複用功能。

7.裝飾模式:動態地給一個對象添加一些額外的職責。就增加功能來說,裝飾模式比生成子類更爲靈活。本質:動態組合。

8.橋接模式:將抽象部分與它的實現部分分離,使它們都可以獨立地變化。本質:分離抽象和實現。

9.組合模式:將對象組合成樹形結構以表示“部分—整體”的層次結構。組合模式使得用戶對單個對象和組合對象的使用具有一致性。本質:統一葉子對象和組合對象。

10.享元模式:運用共享技術有效地支持大量細粒度的對象。本質:分離與共享。

11.代理模式:爲其他對象提供一種代理以控制對這個對象的訪問。本質:控制對象的訪問。

12.外觀模式:爲子系統中的一組接口提供一個一致的界面,Facade模式定義了一個高層接口,這個接口使得這一子系統更加容易使用。本質:封裝交互,簡化調用。

<三>行爲型

13.觀察者模式:定義對象間的一種一對多的依賴關係,當一個對象的狀態發生改變時,所有依賴於它的對象都得到通知並被自動更新。本質:觸發聯動。

14.模板模式:定義一個操作中的算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以不改變一個算法的結構即可重定義該算法的某些特定步驟。本質:固定算法的骨架。

15.命令模式:將一個請求封裝爲一個對象,從而使你可用不同的請求對客戶進行參數化;對請求排隊或記錄請求日誌,以及支持可撤銷的操作。本質:封裝請求。

16.狀態模式:允許一個對象在其內部狀態改變時改變它的行爲。對象看起來似乎修改了它的類。本質:根據狀態來分離和選擇行爲。

17.職責鏈模式:使多個對象都有機會處理請求,從而避免請求的發送者和接收者之間的耦合關係。將這些對象連成一條鏈,並沿着這條鏈傳遞該請求,直到有一個對象處理它爲止。本質:分離職責,動態組合。

18.解釋器模式:給定一個語言,定義它的文法的一種表示,並定義一個解釋器,這個解釋器使用該表示來解釋語言中的句子。本質:分離實現,解釋執行。

19.中介者模式:用一箇中介對象來封裝一系列的對象交互。中介者使得各對象不需要顯式地相互引用,從而使其耦合鬆散,而且可以獨立地改變它們之間的交互。本質:封裝交互。

20.訪問者模式:表示一個作用於某對象結構中的各元素的操作。它使你可以在不改變各元素的類的前提下定義作用於這些元素的新操作。本質:預留通路,回調實現。

21.策略模式:定義一系列的算法,把它們一個個封裝起來,並且使它們可相互替換。本模式使得算法可獨立於使用它的客戶而變化。本質:分離算法,選擇實現。

22.備忘錄模式:在不破壞封裝性的前提下,捕獲一個對象的內部狀態,並在該對象之外保存這個狀態。這樣,以後就可將該對象恢復到原先保存的狀態。本質:保存和恢復內部狀態。

23.迭代器模式:提供一種方法順序訪問一個聚合對象中的各個元素,而又不需暴露該對象的內部表示。本質:控制訪問聚合對象中的元素。

六、建議:設計模式是需要時間才能理解的,有時候把所有的模式看了一遍,感覺好像都懂了,但是在使用時卻都不怎麼用得上,設計模式是需要時常回顧的知識,相信會得到很多靈感。推薦兩本設計模式的書籍:《大話設計模式》(對話式講解,輕鬆易讀,但是不夠深度,也不好複習),《研磨設計模式》陳臣,王斌著(強烈推薦,易懂,易複習,講述方式也很好),然後就可以看看原作《設計模式——可複用面向對象軟件的基礎》了。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章