1. 程式人生 > >java 23種設計模式--代理模式

java 23種設計模式--代理模式

代理模式
為其他物件提供一種代理以控制對此物件的訪問代理模式結構圖

  • Subject類:定義了RealSubject類和proxy類共同的介面,這樣就可以在任何使用RealSubject的地方都可以使用proxy;
public interface Subject{
	/**
	*
	*說話的方法
	*/
	void talk();
	
}
  • RealSubject類: 定義Proxy所代表的真實實體
public class RealSubject implements Subject{

	@Override
	public void talk(){
		System.
out.println("override method") } }
  • Proxy類,儲存一個引用使得代理可以訪問實體類,並提供一個與subject介面相同的介面,這樣代理類就可以代替實體類
public class Proxy{
	
	private RealSubject subject;
	
	public Proxy(RealSubject subject){
		this.subject = subject;
	}
	if( subject == null ){
		subject = new RealSubject();
	}
	@Override
	public
void talk(){ subject.talk(); } }
  • 客戶端程式碼
public class TestProxy{

	public static void main(String[] args){
		Proxy proxy = new Proxy();
		proxy.talk();
	}
}

代理模式應用場景

  • 遠端代理:也就是為一個物件在不同的地址空間提供區域性代表。這樣可以隱藏一個物件存在於不同地址空間的事實。

  • 虛擬代理: 根據需要建立開銷很大的物件,通過它來存放需要例項化很長的物件。

  • 安全代理: 用來控制真實物件訪問時的許可權

  • 只能指引: 是指當呼叫真實的物件時,代理處理另外一些事。

    本文只介紹代理模式的結構和實現方法,後期會更新JDK的靜態代理和動態代理。