23.JAVA編程之靜態(tài)代理模式

代理模式(proxy):為其他對(duì)象提供一種代理以控制對(duì)這個(gè)對(duì)象的訪(fǎng)問(wèn)。
代理模式說(shuō)白了就是“真是對(duì)象”的代表,在訪(fǎng)問(wèn)對(duì)象時(shí)引入一定程度的間接性,因?yàn)檫@種間接性可以附加多種用途。
示例代碼:
先寫(xiě)一個(gè)業(yè)務(wù)接口,在寫(xiě)業(yè)務(wù)具體的類(lèi)并implements業(yè)務(wù)接口,再寫(xiě)一個(gè)代理對(duì)象類(lèi)并implements業(yè)務(wù)接口,個(gè)人感覺(jué)與模板模式有點(diǎn)類(lèi)似。

public class Demo {
    public static void main(String[] args) {
        Action userAction = new UserAction();  //真實(shí)的業(yè)務(wù)對(duì)象
        ActionProxy proxy = new ActionProxy(userAction);
        proxy.doAction();
    }
}

//代理對(duì)象
//用代理記錄用戶(hù)工作的時(shí)間
class ActionProxy implements Action{
    private Action target; //被代理的對(duì)象

    public ActionProxy(Action target){
        this.target = target;
    }
    @Override
    public void doAction() {
        long startTime = System.currentTimeMillis();
        target.doAction();//執(zhí)行真業(yè)務(wù)
        long endTime = System.currentTimeMillis();
        System.out.println("共耗時(shí):"+(endTime-startTime));
    }
}

//業(yè)務(wù)接口
interface Action{
    public void doAction();
}

//業(yè)務(wù)具體的實(shí)現(xiàn)類(lèi)
class UserAction implements Action{

    @Override
    public void doAction() {
        for(int i =0 ;i<1000;i++)
        System.out.println("用戶(hù)開(kāi)始工作");    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容