java 設計模式之代理模式(Proxy)
阿新 • • 發佈:2018-11-05
java 設計模式之代理模式(Proxy)
1. 概述
- 為其他物件提供一種代理以控制對這個物件的訪問
2.適用性
-
遠端代理(RemoteProxy)為一個物件在不同的地址空間提供區域性代表。
-
虛代理(VirtualProxy)根據需要建立開銷很大的物件。
-
保護代理(ProtectionProxy)控制對原始物件的訪問。
-
智慧指引(SmartReference)取代了簡單的指標,它在訪問物件時執行一些附加操作。
-
上面的不一一寫出來,但抗議作為一個思想,先了解。
3.使用知識
- 介面的多型性,通過兩個interface介面多型的應用
- 構造器代理類中新建被代理類
- 虛擬方法呼叫
4.核心思想
- 不直接讓被代理類去完成某種功能,而是通過代理類去控制被代理類去執行自己的某個方法,如:被代理類通過代理類去買房,雖然買房子的看起來是由代理類買的,但真正付錢的人是被代理類,房證的名字也是代理類的。簡單的理解為一箇中介的功能。
5. 類圖
6.dome
//介面的應用:代理模式 public class TestProxy { public static void main(String[] args) { Object obj = new ProxyObject(); obj.action(); } /*輸出結果 *代理類建立成功 *代理類開始執行 *++++被代理類開始執行++++ *++++具體的操作++++ *++++被代理類執行完畢++++ *代理類執行完畢 / } interface Object{ void action(); } //代理類 class ProxyObject implements Object{ Object obj; public ProxyObject() { System.out.println("代理類建立成功"); obj = new ObjectImpl(); } public void action() { System.out.println("代理類開始執行"); obj.action(); System.out.println("代理類執行完畢"); } } //被代理類 class ObjectImpl implements Object{ public void action() { System.out.println("++++被代理類開始執行++++"); System.out.println("++++具體的操作++++"); System.out.println("++++被代理類執行完畢++++"); } }