要想了解Java動態(tài)代理,首先要了解什么叫做代理,熟悉設(shè)計模式的朋友一定知道在Gof總結(jié)的23種設(shè)計模式中,有一種叫做代理(Proxy)的對象結(jié)構(gòu)型模式,動態(tài)代理中的代理,指的就是這種設(shè)計模式。

在我看來所謂的代理模式,和23種設(shè)計模式中的“裝飾模式”是一個東西。23種設(shè)計模式中將它們作為兩種模式,網(wǎng)上也有些文章講這兩種模式的異同,從細(xì)節(jié)來看,確實可以人為地區(qū)分這兩種模式,但是抽象到一定高度后,我認(rèn)為這兩種模式是完全一樣的。因此學(xué)會了代理模式,也就同時掌握了裝飾模式。

代理模式

代理模式簡單來說,就是對一個對象進(jìn)行包裝,包裝后生成的對象具有和原對象一樣的方法列表,但是每個方法都可以是被包裝過的。

靜態(tài)代理

讓我們先來看一段代碼:

萬碼學(xué)堂,電腦培訓(xùn),計算機(jī)培訓(xùn),Java培訓(xùn),JavaEE開發(fā)培訓(xùn),青島軟件培訓(xùn),軟件工程師培訓(xùn)

package common;public class Test {    static interface Subject{        void sayHi();        void sayHello();
    }    
    static class SubjectImpl implements Subject{

        @Override        public void sayHi() {
            System.out.println("hi");

        
		

網(wǎng)友評論