1. 程式人生 > >java 設計模式之代理模式(Proxy)

java 設計模式之代理模式(Proxy)

java 設計模式之代理模式(Proxy)

1. 概述

  1. 為其他物件提供一種代理以控制對這個物件的訪問

2.適用性

  1. 遠端代理(RemoteProxy)為一個物件在不同的地址空間提供區域性代表。

  2. 虛代理(VirtualProxy)根據需要建立開銷很大的物件。

  3. 保護代理(ProtectionProxy)控制對原始物件的訪問。

  4. 智慧指引(SmartReference)取代了簡單的指標,它在訪問物件時執行一些附加操作。

  5. 上面的不一一寫出來,但抗議作為一個思想,先了解。

3.使用知識

  1. 介面的多型性,通過兩個interface介面多型的應用
  2. 構造器代理類中新建被代理類
  3. 虛擬方法呼叫

4.核心思想

  1. 不直接讓被代理類去完成某種功能,而是通過代理類去控制被代理類去執行自己的某個方法,如:被代理類通過代理類去買房,雖然買房子的看起來是由代理類買的,但真正付錢的人是被代理類,房證的名字也是代理類的。簡單的理解為一箇中介的功能。

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("++++被代理類執行完畢++++");
	}

}