1. 程式人生 > >大話設計模式--代理模式

大話設計模式--代理模式

代理模式:為其他物件提供一種代理以控制對這個物件的訪問。


Subject類定義了RealSubject和ProxySubject的公用介面,這樣就在任何使用RealSubject的地方都可以使用ProxySubject。

RealSubject類,定義Proxy所代表的真實實體。

Proxy類,儲存一個引用使得代理可以訪問實體,並提供一個與Subject的介面相同的介面,這樣代理就可以替代實體。

public abstract class Subject {

    public abstract void Request();
}

public class RealSubject extends Subject {

    @Override
    public void Request() {
        System.out.println("真實的請求");
    }
}

public class ProxySubject extends Subject {

    RealSubject realSubject;

    @Override
    public void Request() {
        if(realSubject == null) {
            realSubject = new RealSubject();
        }
        realSubject.Request();
    }
}

public class Main {

    public static void main(String[] args) {
        ProxySubject proxySubject = new ProxySubject();

        proxySubject.Request();
    }
}

代理模式分幾種不同的情況:

第一種:遠端代理,也就是為一個物件在不同的地址空間提供區域性代表,這樣可以隱藏一個物件存在不同地址空間的事實

第二種:虛擬代理,是根據需要建立開銷很大的物件。通過它來存放例項化需要很長時間的真是物件。

第三種:安全代理,用來控制真實物件訪問時的許可權。

第四種:智慧指引,是指當呼叫真是物件時,代理處理另外一些事。