代理模式的定義與特點
定義:由於某些原因需要給某對象提供一個代理以控制對該對象的訪問。
這時,訪問對象不適合或者不能直接引用目標對象,代理對象作爲訪問對象和目標對象之間的中介。
代理模式的主要優點有:
1.代理模式在客戶端與目標對象之間起到一箇中介作用和保護目標對象的作用;
2.代理對象可以擴展目標對象的功能;
3.代理模式能將客戶端與目標對象分離,在一定程度上降低了系統的耦合度;
其主要缺點是:
1.在客戶端和目標對象之間增加一個代理對象,會造成請求處理速度變慢;
2.增加了系統的複雜度;
增強方式:
1. 增強參數列表
2. 增強返回值類型
3. 增強方法體執行邏輯
代理模式實現方式:
1. 靜態代理(瞭解):有一個類文件描述代理模式
2. 動態代理:在內存中形成代理類
實現步驟:
創建代理對象 Object proxy= (Object)Proxy.newProxyInstance(參數1,參數2,參數3);
三個參數:
參數1. 類加載器:真實對象.getClass().getClassLoader()
參數2. 接口數組:真實對象.getClass().getInterfaces()
參數3. 處理器:new InvocationHandler() :
代理邏輯的具體實現,代理對象調用的所有方法都會觸發該方法執行。重寫invoke方法
public Object invoke(Object proxy, Method method, Object[] args)
1. proxy:代理對象
2. method:代理對象調用的方法,被封裝爲的對象
3. args:代理對象調用的方法時,傳遞的參數列表