問(wèn)題的提出

現(xiàn)在生活中,常常在微信朋友圈里面看到代購(gòu)的信息,你想在國(guó)外買(mǎi)什么,香港買(mǎi)什么,但是又懶得自己過(guò)去,于是常常委托別人幫忙買(mǎi)奶粉買(mǎi)那啥的。這類(lèi)問(wèn)題的緣由是因?yàn)榭蛻艉驮a(chǎn)地沒(méi)有直接的接觸,所以需要一個(gè)代理(代購(gòu))的第三者來(lái)實(shí)現(xiàn)間接引用。代理對(duì)象可以在客戶端和目標(biāo)對(duì)象間起到中介作用,而且可以通過(guò)代理對(duì)象去掉客戶不能看到的內(nèi)容和服務(wù)或者添加客戶需要的額外服務(wù)。代理模式是一種很好實(shí)現(xiàn)客戶對(duì)象與代理對(duì)象分離的策略。其抽象UML圖如下圖

Android培訓(xùn),安卓培訓(xùn),手機(jī)開(kāi)發(fā)培訓(xùn),移動(dòng)開(kāi)發(fā)培訓(xùn),云培訓(xùn)培訓(xùn)

代理模式包含如下角色

ISubject:抽象主題角色,是一個(gè)接口。該接口是對(duì)象和它的代理公用的接口。

RealSubject:真實(shí)的主題角色,是實(shí)現(xiàn)主題接口的類(lèi)。

Proxy:代理角色,內(nèi)部含有對(duì)真實(shí)對(duì)象RealSubject的引用,從而可以操作真實(shí)對(duì)象。代理對(duì)象可以在執(zhí)行真實(shí)對(duì)象操作時(shí),附加其他的操作,相當(dāng)于對(duì)真實(shí)對(duì)象進(jìn)行封裝。

買(mǎi)電視為例

1)定義抽象主題-買(mǎi)電視

public interface ITV {    public void buyTV();
}

2)定義實(shí)際主題-買(mǎi)電視過(guò)程

public class Buyer implements ITV {    public void buyTV(){
        System.out.println("I have bought the TV by buyer proxy");
    }
}

3)定義代理

網(wǎng)友評(píng)論