《JAVA與模式》之代理模式

《JAVA與模式》之代理模式

在閻宏博士的《JAVA與模式》一書中開頭是這樣描述代理(Proxy)模式的:

  代理模式是對象的結構模式。代理模式給某一個對象提供一個代理對象,並由代理對象控制對原對象的引用。


代理模式的結構

  所謂代理,就是一個人或者機構代表另一個人或者機構採取行動。在一些情況下,一個客戶不想或者不能夠直接引用一個對象,而代理對象可以在客戶端和目標對象之間起到中介的作用。

  代理模式類圖如下:

  

  在代理模式中的角色:

  ●  抽象對象角色:聲明瞭目標對象和代理對象的共同接口,這樣一來在任何可以使用目標對象的地方都可以使用代理對象。

  ●  目標對象角色:定義了代理對象所代表的目標對象。

  ●  代理對象角色:代理對象內部含有目標對象的引用,從而可以在任何時候操作目標對象;代理對象提供一個與目標對象相同的接口,以便可以在任何時候替代目標對象。代理對象通常在客戶端調用傳遞給目標對象之前或之後,執行某個操作,而不是單純地將調用傳遞給目標對象。

源代碼

  抽象對象角色

public abstract class AbstractObject {
    //操作
    public abstract void operation();
}

  目標對象角色

複製代碼
public class RealObject extends AbstractObject {
    @Override
    public void operation() {
        //一些操作
        System.out.println("一些操作");
    }
}
複製代碼

  代理對象角色

複製代碼
public class ProxyObject extends AbstractObject{
    RealObject realObject = new RealObject();
    @Override
    public void operation() {
        //調用目標對象之前可以做相關操作
        System.out.println("before");        
        realObject.operation();        
        //調用目標對象之後可以做相關操作
        System.out.println("after");
    }
}
複製代碼

  客戶端

複製代碼
public class Client {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        AbstractObject obj = new ProxyObject();
        obj.operation();
    }

}
複製代碼

  從上面的例子可以看出代理對象將客戶端的調用委派給目標對象,在調用目標對象的方法之前跟之後都可以執行特定的操作。

文章轉載自java_my_life 博客園

http://www.cnblogs.com/java-my-life/archive/2012/04/23/2466712.html

發佈了39 篇原創文章 · 獲贊 18 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章