代理模式

在某些情況下,一個(gè)客戶不想或者不能直接引用一個(gè)對(duì)象,此時(shí)可以通過一個(gè)稱之為“代理”的第三者來實(shí)現(xiàn)間接引用。代理對(duì)象可以在客戶端和目標(biāo)對(duì)象之間起到 中介的作用,并且可以通過代理對(duì)象去掉客戶不能看到 的內(nèi)容和服務(wù)或者添加客戶需要的額外服務(wù)。

簡(jiǎn)單來說代理模式就是通過一個(gè)代理對(duì)象去訪問一個(gè)實(shí)際對(duì)象,并且可以像裝飾模式一樣給對(duì)象添加一些功能。

靜態(tài)代理

所謂靜態(tài)代理即在程序運(yùn)行前代理類就已經(jīng)存在,也就是說我們編寫代碼的時(shí)候就已經(jīng)把代理類的代碼寫好了,而動(dòng)態(tài)代理則是在程序運(yùn)行時(shí)自動(dòng)生成代理類。

描述起來太過抽象,看一下代碼就明白是怎么回事了

  • main

public class Main {    public static void main(String[] args) {
        Water water = new Water();
        WaterProxy waterProxy = new WaterProxy(water);
        waterProxy.drink();
    }

}

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