用途
代理模式 (Proxy)
為其他對象提供一種代理以控制對這個對象的通路。
代理模式是一種結構型模式。
結構
圖-代理模式結構圖
Subject : 定義了 RealSubject 和 Proxy 的公共接口,這樣就在任何使用 RealSubject 的地方都可以使用 Proxy 。
abstract class Subject {
public abstract void Request();
}
RealSubject : 定義 Proxy 所代表的真實實體。
class RealSubject extends Subject {
@Override
public void Request() {
System.out.println("真實的請求");
}
Proxy : 儲存一個引用使得代理可以通路實體,并提供一個與 Subject 的接口相同的接口,這樣代理就可以用來替代實體。
class Proxy extends Subject {
private RealSubject real;
if (null == real) {
real = new RealSubject();
}
real.Request();
應用場景
1、遠端代理
為一個遠端對象在不同位址空間提供本地化代表。
2、虛拟代理
根據需要建立開銷很大的對象。通過它來存放執行個體化需要很長時間的真實對象。
3、安全代理
用來控制真實對象的通路權限。
4、智能指引
是指當調用真實對象時,代理處理另外一些事。
要點
代理模式介紹了一種通路對象的間接等級。
一個遠端代理可以隐藏一個對象在不同位址空間的細節。
一個虛拟代理可以根據需要最優化建立對象的開銷。
而安全代理和智能指引都允許通路對象的同時處理其他事務。
推薦
本文屬于
JAVA設計模式系列。
參考資料
《大話設計模式》
《HeadFirst設計模式》