大話設計模式--代理模式
阿新 • • 發佈:2018-11-16
代理模式:為其他物件提供一種代理以控制對這個物件的訪問。
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(); } }
代理模式分幾種不同的情況:
第一種:遠端代理,也就是為一個物件在不同的地址空間提供區域性代表,這樣可以隱藏一個物件存在不同地址空間的事實
第二種:虛擬代理,是根據需要建立開銷很大的物件。通過它來存放例項化需要很長時間的真是物件。
第三種:安全代理,用來控制真實物件訪問時的許可權。
第四種:智慧指引,是指當呼叫真是物件時,代理處理另外一些事。