設計模式分類

設計模式》一書原先把設計模式分爲創建型模式、結構型模式、行爲型模式,把它們通過授權、聚合、診斷的概念來描述。若想更進一步瞭解關於面向對象設計的背景,參考接口模式、內聚。若想更進一步瞭解關於面向對象編程的背景,參考繼承接口多型

模式名稱 描述 設計模式》中提及 代碼大全》中提及[1]
創建型模式
抽象工廠模式 爲一個產品族提供了統一的創建接口。當需要這個產品族的某一系列的時候,可以從抽象工廠中選出相應的系列創建一個具體的工廠類。
工廠方法模式 定義一個接口用於創建對象,但是讓子類決定初始化哪個類。工廠方法把一個類的初始化下放到子類。
生成器模式 將一個複雜對象的構建與它的表示分離,使得同樣的構建過程可以創建不同的表示。
惰性初始模式 推遲對象的創建、數據的計算等需要耗費較多資源的操作,只有在第一次訪問的時候才執行。
對象池模式 通過回收利用對象避免獲取和釋放資源所需的昂貴成本。
原型模式 用原型實例指定創建對象的種類,並且通過拷貝這些原型創建新的對象。
單例模式 確保一個類只有一個實例,並提供對該實例的全局訪問。
多例模式 確保一個類只有命名的實例,並提供對這些實例的全局訪問。
資源獲取爲初始化 通過綁定到合適對象的生命週期來確保資源被適當地釋放。
結構型模式
適配器模式 將某個類的接口轉換成客戶端期望的另一個接口表示。適配器模式可以消除由於接口不匹配所造成的類兼容性問題。
橋接模式 將一個抽象與實現解耦,以便兩者可以獨立的變化。
組合模式 把多個對象組成樹狀結構來表示局部與整體,這樣用戶可以一樣的對待單個對象和對象的組合。
修飾模式 向某個對象動態地添加更多的功能。修飾模式是除類繼承外另一種擴展功能的方法。
外觀模式 爲子系統中的一組接口提供一個一致的界面, 外觀模式定義了一個高層接口,這個接口使得這一子系統更加容易使用。
享元 通過共享以便有效的支持大量小顆粒對象。
代理 爲其他對象提供一個代理以控制對這個對象的訪問。
行為型模式
黑板 廣義的觀察者在系統範圍內交流信息,允許多位讀者和寫者。
責任鏈 爲解除請求的發送者和接收者之間耦合,而使多個對象都有機會處理這個請求。將這些對象連成一條鏈,並沿着這條鏈傳遞該請求,直到有一個對象處理它。
命令 將一個請求封裝爲一個對象,從而使你可用不同的請求對客戶進行參數化;對請求排隊或記錄請求日誌,以及支持可取消的操作。
解釋器 給定一個語言, 定義它的文法的一種表示,並定義一個解釋器, 該解釋器使用該表示來解釋語言中的句子。
迭代器 提供一種方法順序訪問一個聚合對象中各個元素, 而又不需暴露該對象的內部表示。
中介者 包裝了一系列對象相互作用的方式,使得這些對象不必相互明顯作用,從而使它們可以鬆散偶合。當某些對象之間的作用發生改變時,不會立即影響其他的一些對象之間的作用,保證這些作用可以彼此獨立的變化。
備忘錄 備忘錄對象是一個用來存儲另外一個對象內部狀態的快照的對象。備忘錄模式的用意是在不破壞封裝的條件下,將一個對象的狀態捉住,並外部化,存儲起來,從而可以在將來合適的時候把這個對象還原到存儲起來的狀態。
空對象 通過提供默認對象來避免空引用。
觀察者模式 在對象間定義一個一對多的聯繫性,由此當一個對象改變了狀態,所有其他相關的對象會被通知並且自動刷新。
規格 以布爾形式表示的可重綁定的商業邏輯。
狀態 讓一個對象在其內部狀態改變的時候,其行爲也隨之改變。狀態模式需要對每一個系統可能取得的狀態創立一個狀態類的子類。當系統的狀態變化時,系統便改變所選的子類。
策略 定義一個算法的系列,將其各個分裝,並且使他們有交互性。策略模式使得算法在用戶使用的時候能獨立的改變。
模板方法 模板方法模式準備一個抽象類,將部分邏輯以具體方法及具體構造子類的形式實現,然後聲明一些抽象方法來迫使子類實現剩餘的邏輯。不同的子類可以以不同的方式實現這些抽象方法,從而對剩餘的邏輯有不同的實現。先構建一個頂級邏輯框架,而將邏輯的細節留給具體的子類去實現。
訪問者 封裝一些施加於某種數據結構元素之上的操作。一旦這些操作需要修改,接受這個操作的數據結構可以保持不變。訪問者模式適用於數據結構相對未定的系統,它把數據結構和作用於結構上的操作之間的耦合解脫開,使得操作集合可以相對自由的演化。
併發型模式
主動對象  
阻礙  
雙重檢查鎖定  
守衛  
領導者/追隨者  
監測對象模式  
讀寫鎖  
調度  
線程池模式  
線程特定存儲  
反應器  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章