天天看點

JAVA 設計模式 代理模式

用途

代理模式 (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設計模式》