一.簡介
適配器模式:適配器模式(英語:adapter pattern)有時候也稱包裝樣式或者包裝。將一個類的接口轉接成用戶所期待的。一個適配使得因接口不兼容而不能在一塊兒工做的類工做在一塊兒,作法是將類本身的接口包裹在一個已存在的類中。
代理模式:爲其餘對象提供一種代理以控制對這個對象的訪問。在某些狀況下,一個對象不適合或者不能直接引用另外一個對象,而代理對象能夠在客戶端和目標對象之間起到中介的做用。java
二.困惑
設計模式老是經過增長層來進行解耦合,提升擴展性,可是若是咱們無法從在這個抽象維度中看出,這個層真正的抽象含義,那麼咱們很難搞懂一個模式真正的內涵?我就有這個疑問,這兩個東東都是增長了一層,可是這一層有什麼區別?設計模式
三.理解
很明顯,適配器模式是由於新舊接口不一致致使出現了客戶端沒法獲得知足的問題,可是,因爲舊的接口是不能被徹底重構掉的,由於咱們還想使用實現了這個接口的一些服務。那麼爲了使用之前實現舊接口的服務,咱們就應該把新的接口轉換成舊接口;實現這個轉換的類就是抽象意義的轉換器。
就好比在java中早期的枚舉接口是Enumeration然後定義的枚舉接口是Iterator;有不少舊的類實現了enumeration接口暴露出了一些服務,可是這些服務咱們如今想經過傳入Iterator接口而不是Enumeration接口來調用,這時就須要一個適配器,那麼client就能用這個服務了(服務端只想用Iterator或者只知道這個接口)。
相比於適配器的應用場景,代理就不同了,雖然代理也一樣是增長了一層,可是,代理提供的接口和本來的接口是同樣的,代理模式的做用是不把實現直接暴露給client,而是經過代理這個層,代理可以作一些處理。spa