
今天我來全面總結(jié)一下Android開發(fā)中最常用的設計模式 - 代理模式。
其他設計模式介紹 1分鐘全面了解“設計模式” 單例模式(Singleton) - 最易懂的設計模式解析 簡單工廠模式(SimpleFactoryPattern)- 最易懂的設計模式解析 工廠方法模式(Factory Method)- 最易懂的設計模式解析 抽象工廠模式(Abstract Factory)- 最易懂的設計模式解析 策略模式(Strategy Pattern)- 最易懂的設計模式解析 適配器模式(Adapter Pattern)- 最易懂的設計模式解析 代理模式(PRoxy Pattern)- 最易懂的設計模式解析 模板方法模式(Template Method) - 最易懂的設計模式解析 建造者模式(Builder Pattern)- 最易懂的設計模式解析 外觀模式(Facade Pattern) - 最易懂的設計模式解析

給目標對象提供一個代理對象,并由代理對象控制對目標對象的引用
代理對象:起到中介作用,連接客戶端和目標對象 例子:電腦桌面的快捷方式。電腦對某個程序提供一個快捷方式(代理對象),快捷方式連接客戶端和程序,客戶端通過操作快捷方式就可以操作那個程序通過引入代理對象的方式來間接訪問目標對象
防止直接訪問目標對象給系統(tǒng)帶來的不必要復雜性。

接下來我用一個實例來對代理模式進行更深一步的介紹。 a. 實例概況
背景:小成希望買一臺最新的頂配Mac電腦沖突:國內(nèi)還沒上,只有美國才有解決方案:尋找代購進行購買代購(代理對象) 代替 我(真實對象) 去買Mac(間接訪問的操作)
b. 使用步驟 步驟1: 創(chuàng)建抽象對象接口(Subject):聲明你(真實對象)需要讓代購(代理對象)幫忙做的事(買Mac)
public interface Subject { public void buyMac();}步驟2: 創(chuàng)建真實對象類(RealSubject),即”我“
public class RealSubject implement Subject{ @Override public void buyMac() { System.out.println(”買一臺Mac“); } }步驟3: 創(chuàng)建代理對象類(Proxy),即”代購“,并通過代理類創(chuàng)建真實對象實例并訪問其方法
public class Proxy implements Subject{ @Override public void buyMac{ //引用并創(chuàng)建真實對象實例,即”我“ RealSubject realSubject = new RealSubject(); //調(diào)用真實對象的方法,進行代理購買Mac realSubject.buyMac(); //代理對象額外做的操作 this.WrapMac(); } public void WrapMac(){ System.out.println(”用盒子包裝好Mac“); }}步驟4: 客戶端調(diào)用
public class ProxyPattern { public static void main(String[] args){ Subject proxy = new Proxy(); proxy.buyMac(); }}結(jié)果輸出
買一臺Mac用盒子包裝好Mac在全面解析完代理模式后,我來分析下其優(yōu)缺點:
當需要為一個對象再不同的地址空間提供局部的代表時 此時的代理模式稱為遠程代理:為一個對象在不同的地址空間提供局部代表。
目的:
隱藏一個對象存在于不同地址空間的事實; 遠程機器可能具有更好的計算性能與處理速度,可以快速響應并處理客戶端請求。當需要創(chuàng)建開銷非常大的對象時 此時的代理模式稱為虛擬代理:通過使用過一個小的對象代理一個大對象。
目的:減少系統(tǒng)的開銷。
當需要控制對原始對象的訪問時 此時的代理模式稱為保護代理:控制目標對象的訪問,給不同用戶提供不同的訪問權(quán)限目的:用來控制對真實對象的訪問權(quán)限
當需要在訪問對象時附加額外操作時 此時的代理模式稱為智能引用代理,額外操作包括耗時操作、計算訪問次數(shù)等等 目的:在不影響對象類的情況下,在訪問對象時進行更多的操作 以上是最常用的使用場景,其他還包括:防火墻代理:保護目標不讓惡意用戶靠近Cache代理:為結(jié)果提供臨時的存儲空間,以便其他客戶端調(diào)用本文主要對代理模式進行了全面介紹,接下來將介紹其他設計模式,有興趣可以繼續(xù)關(guān)注Carson_Ho的安卓開發(fā)筆記!!!!
相關(guān)文章閱讀 單例模式(Singleton) - 最易懂的設計模式解析 簡單工廠模式(SimpleFactoryPattern)- 最易懂的設計模式解析 工廠方法模式(Factory Method)- 最易懂的設計模式解析 抽象工廠模式(Abstract Factory)- 最易懂的設計模式解析 策略模式(Strategy Pattern)- 最易懂的設計模式解析 適配器模式(Adapter Pattern)- 最易懂的設計模式解析 代理模式(Proxy Pattern)- 最易懂的設計模式解析 模板方法模式(Template Method) - 最易懂的設計模式解析 建造者模式(Builder Pattern)- 最易懂的設計模式解析 外觀模式(Facade Pattern) - 最易懂的設計模式解析
新聞熱點
疑難解答