1. 程式人生 > >模式的秘密-適配器模式和代理模式的區別

模式的秘密-適配器模式和代理模式的區別

滿足 客戶端 對象的訪問 tor 抽象 通過 tro adapter 其他

一.簡介
適配器模式:適配器模式(英語:adapter pattern)有時候也稱包裝樣式或者包裝。將一個類的接口轉接成用戶所期待的。一個適配使得因接口不兼容而不能在一起工作的類工作在一起,做法是將類自己的接口包裹在一個已存在的類中。
代理模式:為其他對象提供一種代理以控制對這個對象的訪問。在某些情況下,一個對象不適合或者不能直接引用另一個對象,而代理對象可以在客戶端和目標對象之間起到中介的作用。

二.困惑
設計模式總是通過增加層來進行解耦合,提高擴展性,但是如果我們沒法從在這個抽象維度中看出,這個層真正的抽象含義,那麽我們很難搞懂一個模式真正的內涵?我就有這個疑問,這兩個東東都是增加了一層,但是這一層有什麽區別


三.理解
很明顯,適配器模式是因為新舊接口不一致導致出現了客戶端無法得到滿足的問題,但是,由於舊的接口是不能被完全重構掉的,因為我們還想使用實現了這個接口的一些服務。那麽為了使用以前實現舊接口的服務,我們就應該把新的接口轉換成舊接口;實現這個轉換的類就是抽象意義的轉換器。
就比如在java中早期的枚舉接口是Enumeration而後定義的枚舉接口是Iterator;有很多舊的類實現了enumeration接口暴露出了一些服務,但是這些服務我們現在想通過傳入Iterator接口而不是Enumeration接口來調用,這時就需要一個適配器,那麽client就能用這個服務了(服務端只想用Iterator或者只知道這個接口)。
相比於適配器的應用場景,代理就不一樣了,雖然代理也同樣是增加了一層,但是,代理提供的接口和原本的接口是一樣的

,代理模式的作用是不把實現直接暴露給client,而是通過代理這個層,代理能夠做一些處理

模式的秘密-適配器模式和代理模式的區別