Java 設計---Proxy 代理模式
阿新 • • 發佈:2018-11-13
何謂代理模式
代理模式是指客戶端不直接呼叫服務物件,而是通過代理服務去呼叫物件。
應用場景
1.當需要為一個物件在不同的地址空間提供區域性的代表時;此時的代理模式是遠端代理。
目的:
a.隱藏一個物件存在於不同的地址空間的事實;
b.遠端機器可能具有更好的計算效能與處理速度,可以快速響應並處理客戶端請求
2.建立開銷非常大的物件時,此時的代理模式稱為虛擬代理:通過使用過一個小的物件代理一個大物件。
目的:
減少系統的開銷。
3.控制對原始物件的訪問時,此時的代理模式稱為保護代理:控制目標物件的訪問,給不同使用者提供不同的訪問許可權
目的:
用來控制對真實物件的訪問許可權
4.需要在訪問物件時附加額外操作時,此時的代理模式稱為智慧引用代理,額外操作包括耗時操作、計算訪問次數等等
目的:
優缺點
1.可以很好的保護目標物件。
2.協調呼叫者和被呼叫者,降低了系統的耦合度
a.增加代理會降低客戶端對實際物件訪問時間
b.增加系統的複雜性
程式碼實現
靜態代理:
//create interface
public interface Subject {
public void init();
}
//create Real Subject
public RealSubject implements Subject {
@Override
public void init (){
System.out.printl("Proxy 靜態代理");
}
}
//create Proxy Subject
public ProxySubject implements Subject {
private Subject subject;
public ProxySubject(Subject subject) {
this.subject = subject;
}
@Override
public void init(){
subject.init();
}
}
//Test
public class Client{
public static void main(String[] org){
ProxySubject proxySubject = new ProxySubject();
proxySubject.init();
}
}
動態代理:
其實在很多配置檔案 都有看到過,在需要的時候初始化物件。