代理模式(Proxy),爲其他對象提供一種代理以控制對這個對象的訪問。
應用:
遠程代理,爲一個對象在不同的地址空間提供局部代表。隱藏一個對象存在於不同地址空間的事實,如WebService。
虛擬代理,根據需要創建開銷很大的對象。通過它來存放實例化需要很長時間的真實對象。
安全代理,用來控制真實對象訪問時的權限。
智能指引,調用真實對象時,代理處理另外的事。
類圖:
示例代碼:
//package com.dlut.designpattern.proxy;
public interface AbstractDriver {
public void run();
}
class RealDriver implements AbstractDriver{
public void run() {
System.out.println("car is running");
}
}
class ProxyDriver implements AbstractDriver{
AbstractDriver driver=new RealDriver();
public void run() {
System.out.println("dididi~~~");
driver.run();
}
}
測試類:
//package com.dlut.designpattern.proxy;
public class Test {
public static void main(String[] args) {
AbstractDriver driver = new ProxyDriver();
driver.run();
}
}
執行結果:
dididi~~~
car is running
代理模式是一種很好理解的設計模式,也經常能在我們的項目中運用到。
參考: