首先這裏先講下複合模式的定義,複合模式結合兩個或以上的模式,組成一個解決方案,解決一再發生的通常性問題。具體場景和例子這裏就不介紹了。html
好了,如今讓咱們看下什麼是模式。算法
模式:是在某情境下,針對某問題的某種解決方案。設計模式
情境就是應用某個模式的狀況下,這應該是會不斷出現的狀況。設計
問題就是你想在某情境下達到的目標,但也能夠是某情境下的約束代理
解決方案就是你所追求的,一個通用的設計,用瞭解決約束、達到目標。server
根據模式的目標能夠將模式分紅三個不一樣類目:建立型、行爲型以及結構型htm
建立型模式:涉及到將對象實例化,這類模式都提供一個方法,將客戶從所須要實例化的對象中解耦。對象
行爲型模式:涉及到類與對象如何交換及分配職責。blog
結構型:能夠讓你把類或對象組合到更大的結構中接口
下面咱們主要區分幾個設計模式所屬的類目。
建立型:Abstract Factory、Factory Method、Singleton、
結構型:Decorator、Composite、Proxy、Facade、Adapter
行爲型:State、Iterator、Observer、Strategy、Command、Template
接着,讓咱們在總結下以前介紹的各個設計模式吧。
裝飾者:包裝一個對象,以提供新的行爲。
狀態 :封裝了基於狀態的行爲,並使用委託在行爲之間切換。
迭代器:在對象的集合之中游走,而不暴露集合的實現。
外觀 :簡化一羣類的接口。
策略 :封裝可互換的行爲,並使用委託來決定使用哪個。
代理 :包裝對象,以控制對此對象的訪問。
工廠方法:由子類決定要建立的具體類是哪個
適配器:封裝對象,並提供不一樣的接口。
觀察者:讓對象可以在狀態改變時被通知。
模板方法:由子類決定如何實現一個算法的步驟。
組合 :客戶用一致的方式處理對象集合和單個對象。
單例 :確保有且只有一個對象唄建立。
抽象工廠:容許客戶建立對象的家族,而無需指定具體的類。
命令 :封裝請求成爲對象。
PS:說明下此係列未涉及的其餘設計模式有:橋接、生成器、責任鏈、蠅量、解釋器、中介者、備忘錄、原型、訪問者。有興趣的能夠去參考博客http://www.cnblogs.com/zuoxiaolong/category/509144.html的介紹。
End by 設計模式