問題的提出
現(xiàn)在生活中,常常在微信朋友圈里面看到代購的信息,你想在國外買什么,香港買什么,但是又懶得自己過去,于是常常委托別人幫忙買奶粉買那啥的。這類問題的緣由是因為客戶和原產(chǎn)地沒有直接的接觸,所以需要一個代理(代購)的第三者來實現(xiàn)間接引用。代理對象可以在客戶端和目標(biāo)對象間起到中介作用,而且可以通過代理對象去掉客戶不能看到的內(nèi)容和服務(wù)或者添加客戶需要的額外服務(wù)。代理模式是一種很好實現(xiàn)客戶對象與代理對象分離的策略。其抽象UML圖如下圖
代理模式包含如下角色
ISubject:抽象主題角色,是一個接口。該接口是對象和它的代理公用的接口。
RealSubject:真實的主題角色,是實現(xiàn)主題接口的類。
Proxy:代理角色,內(nèi)部含有對真實對象RealSubject的引用,從而可以操作真實對象。代理對象可以在執(zhí)行真實對象操作時,附加其他的操作,相當(dāng)于對真實對象進(jìn)行封裝。
買電視為例
1)定義抽象主題-買電視
public interface ITV { public void buyTV(); }
2)定義實際主題-買電視過程
public class Buyer implements ITV { public void buyTV(){ System.out.println("I have bought the TV by buyer proxy"); } }
3)定義代理
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動安全 [無線安全]玩轉(zhuǎn)無線電——不安全的藍(lán)牙鎖 2017-07-26
- 消息隊列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】 2017-07-26
- 詞向量-LRWE模型-更好地識別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來看看(二) 2017-07-26