設計模式----代理模式UML和實現代碼

1、什麼是代理模式?

代理模式(Proxy)定義:爲其餘對象提供一種代理,以控制對這個對象的訪問java

類型:結構型模式git

順口溜:適裝組享github

2、代理模式UML

3、JAVA代碼實現

package com.amosli.dp.structural.proxy;

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

package com.amosli.dp.structural.proxy;

public class Proxy extends Subject {
	private Subject subject;

	public Proxy() {
		subject = new RealSubject();
	}

	@Override
	void request() {
		subject.request();
	}

}

package com.amosli.dp.structural.proxy;

public class RealSubject extends Subject{

	@Override
	void request() {
		System.out.println("this is realsubject...");
	}

}

package com.amosli.dp.structural.proxy;

public abstract class Subject {
	abstract void request();
}

4、使用場景

1 遠程代理(Remote  Proxy)

    爲一個位於不一樣的地址空間的對象提供一個本地的代理對象。這個不一樣的地址空間能夠是在同一臺主機中,也但是在另外一臺主機中,遠程代理又叫作大使(Ambassador) ide

2 虛擬代理(Virtual Proxy)

    根據須要建立開銷很大的對象。若是須要建立一個資源消耗較大的對象,先建立一個消耗相對較小的對象來表示,真實對象只在須要時纔會被真正建立。  this

3 保護代理(Protection Proxy)

    控制對原始對象的訪問。保護代理用於對象應該有不一樣的訪問權限的時候。 spa

4 智能指引(Smart Reference)

    取代了簡單的指針,它在訪問對象時執行一些附加操做。代理

5 Copy-on-Write代理

它是虛擬代理的一種,把複製(克隆)操做延遲到只有在客戶端真正須要時才執行。通常來講,對象的深克隆是一個開銷較大的操做,Copy-on-Write代理可讓這個操做延遲,只有對象被用到的時候才被克隆。指針

5、源碼地址

本系列文章源碼地址,https://github.com/amosli/dp  歡迎Fork  & Star !!code

相關文章
相關標籤/搜索