前言
今天Carson來全面總結(jié)最常用的設(shè)計(jì)模式 - 代理模式。
其他設(shè)計(jì)模式介紹
這是一份全面 & 詳細(xì)的設(shè)計(jì)模式學(xué)習(xí)指南
Carson帶你學(xué)設(shè)計(jì)模式:單例模式(Singleton)
Carson帶你學(xué)設(shè)計(jì)模式:簡單工廠模式(SimpleFactoryPattern)
Carson帶你學(xué)設(shè)計(jì)模式:工廠方法模式(Factory Method)
Carson帶你學(xué)設(shè)計(jì)模式:抽象工廠模式(Abstract Factory)
Carson帶你學(xué)設(shè)計(jì)模式:策略模式(Strategy Pattern)
Carson帶你學(xué)設(shè)計(jì)模式:適配器模式(Adapter Pattern)
Carson帶你學(xué)設(shè)計(jì)模式:靜態(tài)代理模式(Proxy Pattern)
Carson帶你學(xué)設(shè)計(jì)模式:動(dòng)態(tài)代理模式(Proxy Pattern)
Carson帶你學(xué)設(shè)計(jì)模式:模板方法模式(Template Method)
Carson帶你學(xué)設(shè)計(jì)模式:建造者模式(Builder Pattern)
Carson帶你學(xué)設(shè)計(jì)模式:外觀模式(Facade Pattern)
Carson帶你學(xué)設(shè)計(jì)模式:觀察者模式(Observer)
目錄
1. 介紹
1.1 定義
給目標(biāo)對象提供一個(gè)代理對象,并由代理對象控制對目標(biāo)對象的引用
- 代理對象:起到中介作用,連接客戶端和目標(biāo)對象
- 例子:電腦桌面的快捷方式。電腦對某個(gè)程序提供一個(gè)快捷方式(代理對象),快捷方式連接客戶端和程序,客戶端通過操作快捷方式就可以操作那個(gè)程序
1.2 主要作用
通過引入代理對象的方式來間接訪問目標(biāo)對象
1.3 解決的問題
防止直接訪問目標(biāo)對象給系統(tǒng)帶來的不必要復(fù)雜性。
2. 模式原理
2.1 UML類圖 & 組成
2.2 實(shí)例講解
接下來我用一個(gè)實(shí)例來對代理模式進(jìn)行更深一步的介紹。
a. 實(shí)例概況
- 背景:小成希望買一臺(tái)最新的頂配Mac電腦
- 沖突:國內(nèi)還沒上,只有美國才有
- 解決方案:尋找代購進(jìn)行購買
代購(代理對象) 代替 我(真實(shí)對象) 去買Mac(間接訪問的操作)
b. 使用步驟
步驟1: 創(chuàng)建抽象對象接口(Subject):聲明你(真實(shí)對象)需要讓代購(代理對象)幫忙做的事(買Mac)
public interface Subject {
public void buyMac();
}
步驟2: 創(chuàng)建真實(shí)對象類(RealSubject),即”我“
public class RealSubject implement Subject{
@Override
public void buyMac() {
System.out.println(”買一臺(tái)Mac“);
}
}
步驟3:創(chuàng)建代理對象類(Proxy),即”代購“,并通過代理類創(chuàng)建真實(shí)對象實(shí)例并訪問其方法
public class Proxy implements Subject{
@Override
public void buyMac{
//引用并創(chuàng)建真實(shí)對象實(shí)例,即”我“
RealSubject realSubject = new RealSubject();
//調(diào)用真實(shí)對象的方法,進(jìn)行代理購買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é)果輸出
買一臺(tái)Mac
用盒子包裝好Mac
通過上述這個(gè)常見的生活例子,我相信你已經(jīng)完全明白了代理模式的原理了!!
3. 優(yōu)缺點(diǎn)
在全面解析完代理模式后,我來分析下其優(yōu)缺點(diǎn):
3.1 優(yōu)點(diǎn)
- 協(xié)調(diào)調(diào)用者和被調(diào)用者,降低了系統(tǒng)的耦合度
- 代理對象作為客戶端和目標(biāo)對象之間的中介,起到了保護(hù)目標(biāo)對象的作用
3.2 缺點(diǎn)
- 由于在客戶端和真實(shí)主題之間增加了代理對象,因此會(huì)造成請求的處理速度變慢;
- 實(shí)現(xiàn)代理模式需要額外的工作(有些代理模式的實(shí)現(xiàn)非常復(fù)雜),從而增加了系統(tǒng)實(shí)現(xiàn)的復(fù)雜度。
4. 應(yīng)用場景
5. 總結(jié)
- 本文主要對代理模式進(jìn)行了全面介紹
- 接下來我會(huì)對每種設(shè)計(jì)模式進(jìn)行詳細(xì)的分析,歡迎關(guān)注Carson_Ho的簡書,不定期分享關(guān)于安卓開發(fā)的干貨,追求短、平、快,但卻不缺深度。
請點(diǎn)贊!因?yàn)槟愕墓膭?lì)是我寫作的最大動(dòng)力!
相關(guān)文章閱讀
這是一份全面 & 詳細(xì)的設(shè)計(jì)模式學(xué)習(xí)指南
Carson帶你學(xué)設(shè)計(jì)模式:單例模式(Singleton)
Carson帶你學(xué)設(shè)計(jì)模式:簡單工廠模式(SimpleFactoryPattern)
Carson帶你學(xué)設(shè)計(jì)模式:工廠方法模式(Factory Method)
Carson帶你學(xué)設(shè)計(jì)模式:抽象工廠模式(Abstract Factory)
Carson帶你學(xué)設(shè)計(jì)模式:策略模式(Strategy Pattern)
Carson帶你學(xué)設(shè)計(jì)模式:適配器模式(Adapter Pattern)
Carson帶你學(xué)設(shè)計(jì)模式:靜態(tài)代理模式(Proxy Pattern)
Carson帶你學(xué)設(shè)計(jì)模式:動(dòng)態(tài)代理模式(Proxy Pattern)
Carson帶你學(xué)設(shè)計(jì)模式:模板方法模式(Template Method)
Carson帶你學(xué)設(shè)計(jì)模式:建造者模式(Builder Pattern)
Carson帶你學(xué)設(shè)計(jì)模式:外觀模式(Facade Pattern)
Carson帶你學(xué)設(shè)計(jì)模式:觀察者模式(Observer)