国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

代理模式(Proxy Pattern)- 最易懂的設計模式解析

2019-11-09 17:50:29
字體:
供稿:網(wǎng)友


前言

今天我來全面總結(jié)一下Android開發(fā)中最常用的設計模式 - 代理模式。

其他設計模式介紹 1分鐘全面了解“設計模式” 單例模式(Singleton) - 最易懂的設計模式解析 簡單工廠模式(SimpleFactoryPattern)- 最易懂的設計模式解析 工廠方法模式(Factory Method)- 最易懂的設計模式解析 抽象工廠模式(Abstract Factory)- 最易懂的設計模式解析 策略模式(Strategy Pattern)- 最易懂的設計模式解析 適配器模式(Adapter Pattern)- 最易懂的設計模式解析 代理模式(PRoxy Pattern)- 最易懂的設計模式解析 模板方法模式(Template Method) - 最易懂的設計模式解析 建造者模式(Builder Pattern)- 最易懂的設計模式解析 外觀模式(Facade Pattern) - 最易懂的設計模式解析


目錄

代理模式.jpg


1. 介紹

1.1 定義

給目標對象提供一個代理對象,并由代理對象控制對目標對象的引用

代理對象:起到中介作用,連接客戶端和目標對象 例子:電腦桌面的快捷方式。電腦對某個程序提供一個快捷方式(代理對象),快捷方式連接客戶端和程序,客戶端通過操作快捷方式就可以操作那個程序

1.2 主要作用

通過引入代理對象的方式來間接訪問目標對象

1.3 解決的問題

防止直接訪問目標對象給系統(tǒng)帶來的不必要復雜性。


2. 模式原理

2.1 UML類圖 & 組成

代理模式.png

2.2 實例講解

接下來我用一個實例來對代理模式進行更深一步的介紹。 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

通過上述這個常見的生活例子,我相信你已經(jīng)完全明白了代理模式的原理了!!


3. 優(yōu)缺點

在全面解析完代理模式后,我來分析下其優(yōu)缺點:

3.1 優(yōu)點

協(xié)調(diào)調(diào)用者和被調(diào)用者,降低了系統(tǒng)的耦合度代理對象作為客戶端和目標對象之間的中介,起到了保護目標對象的作用

3.2 缺點

由于在客戶端和真實主題之間增加了代理對象,因此會造成請求的處理速度變慢;實現(xiàn)代理模式需要額外的工作(有些代理模式的實現(xiàn)非常復雜),從而增加了系統(tǒng)實現(xiàn)的復雜度。

4. 應用場景

當需要為一個對象再不同的地址空間提供局部的代表時 此時的代理模式稱為遠程代理:為一個對象在不同的地址空間提供局部代表。

目的:

隱藏一個對象存在于不同地址空間的事實; 遠程機器可能具有更好的計算性能與處理速度,可以快速響應并處理客戶端請求。

當需要創(chuàng)建開銷非常大的對象時 此時的代理模式稱為虛擬代理:通過使用過一個小的對象代理一個大對象。

目的:減少系統(tǒng)的開銷。

當需要控制對原始對象的訪問時 此時的代理模式稱為保護代理:控制目標對象的訪問,給不同用戶提供不同的訪問權(quán)限

目的:用來控制對真實對象的訪問權(quán)限

當需要在訪問對象時附加額外操作時 此時的代理模式稱為智能引用代理,額外操作包括耗時操作、計算訪問次數(shù)等等 目的:在不影響對象類的情況下,在訪問對象時進行更多的操作 以上是最常用的使用場景,其他還包括:防火墻代理:保護目標不讓惡意用戶靠近Cache代理:為結(jié)果提供臨時的存儲空間,以便其他客戶端調(diào)用

5. 總結(jié)

本文主要對代理模式進行了全面介紹,接下來將介紹其他設計模式,有興趣可以繼續(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) - 最易懂的設計模式解析


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 玉龙| 铜梁县| 康保县| 襄垣县| 沅陵县| 宁德市| 梨树县| 牟定县| 长沙市| 遂宁市| 山丹县| 沧州市| 平塘县| 香港| 全南县| 常山县| 根河市| 巫溪县| 宁晋县| 双辽市| 磐安县| 弥渡县| 永修县| 巫溪县| 神农架林区| 富川| 湘西| 三河市| 郁南县| 台南市| 普定县| 辽宁省| 宣汉县| 纳雍县| 凭祥市| 萍乡市| 修武县| 南汇区| 隆化县| 斗六市| 平顶山市|