設計模式之代理模式

代理模式的結構

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

代理模式類圖如下:

在代理模式中的三種角色:

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

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

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

舉例代碼

抽象對象角色

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();
    }

}


從上面簡單的例子我們可以看出,代理在明處,真正的幕後操作隱藏了,所以我自定義爲隱藏模式也可以啊,在實際編程中某一些類不想讓客戶端直接訪問可以採取這種模式。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章