適配器模式,包括3種,針對類的適配器、針對對象的適配器、針對接口的適配器,其中針對對象的適配器是關鍵由於它能夠理解爲其餘結構性模式的基礎。下面分別進行說明設計模式
類的適配器函數
要點:3個主要元素,source類(待適配)、adapter、目標接口 Targetable ,adapter繼承source,實現Targetable。設計
對象的適配器代理
要點:3個主要元素,source類(待適配)、adapter、目標接口 Targetable,adapter實現Targetable,包含一個source的實例。對象
接口的適配器繼承
要點:一個已經存在的interface,我只須要用到該interface當中的部分方法,這個時候能夠寫一個abstract類,實現interface的全部方法,而後用個人類去繼承該abstract類,實現我須要用的方法便可。接口
難易程度:比較簡單get
普遍程度:比較普遍table
裝飾者模式基礎
要點:一個interface,一個Source類,一個 Decorator 類, 都實現這個接口,在Decorator 的構造函數當中傳入一個Source的實例,在他們的同名方法當中,Decorator 的實現會比Source的實現多了一些操做。
難易程度:比較簡單
普遍程度:通常
代理模式
要點:一個interface,一個Source類,一個 Proxy類, 都實現這個接口,在Proxy的構造函數當中new一個Source的實例,在他們的同名方法當中,Proxy的實現會比Source的實現多了一些操做。
難易程度:比較簡單
普遍程度:比較普遍
在這裏,咱們能夠比較一下裝飾者模式和代理模式,其實他們是很像的,區別只是,對於client而言,我知道Decorator修飾的是哪一個類,而不知道Proxy代理的到底是誰。
而裝飾者模式和對象的適配器模式也很像,區別只是source和adapter不實現同一接口,而source和Decorator 實現同一接口。
因此,從語義上來說,適配器,是爲了讓本來不合用的東西,可以爲咱們現行系統所用,而裝飾者只是爲了加強某些現有方法的功能。
外觀模式
要點:用一個Facade類,把若干個類組合在一塊兒。
典型場景:其實這樣的作法,即便你徹底不瞭解設計模式,仍是會常常用到的。
難易程度:很簡單
普遍程度:很是普遍
橋接模式
要點:把抽象的概念和具體的行爲分離開來。
典型場景:若是咱們須要對一個概念進行多維的劃分,若是採用繼承的方式,可能會出現多層的繼承關係, 而把抽象的概念和具體的行爲分離開來,會極大的簡化咱們的代碼。
難易程度:理解起來較爲困難
普遍程度:比較普遍
組合模式
要點:二叉樹、鏈表等
典型場景:二叉樹、鏈表
難易程度:具體的應用比較困難
普遍程度:很是普遍
享元模式
要點:多與工廠模式一塊兒使用,在須要使用一個類對象的時候,並非直接建立,而是從共享池當中查找有沒有可用的,若是沒有,建立,若是有,直接拿過來用
典型場景:鏈接池
難易程度:實現較困難
普遍程度:比較普遍