Java設計模式之代理模式

模式結構:

Subject:抽象主題角色

Proxy:代理主題角色

RealSubject:真實主題角色


UML圖:



例子代碼:



抽象主題角色:

public interface Subject {
    void request();
}

具體主題角色:

public class ConcreteSubject implements Subject {
    @Override
    public void request() {
        System.out.println("代理...");
    }
}


代理主題角色:

public class Proxy implements Subject{

    private Subject subject;

    public Proxy(Subject subject) {
        this.subject = subject;
    }

    public void preRequest(){
        System.out.println("代理前...");
    }

    public void afterRequest(){
        System.out.println("代理後...");
    }

    @Override
    public void request() {
        preRequest();
        subject.request();
        afterRequest();
    }
}


客戶類:

public class Client {
    public static void main(String[] args) {
        //實例代理對象
        Subject subject = new ConcreteSubject();
        //對象代理
        Proxy proxy = new Proxy(subject);
        //代理結果
        proxy.request();
    }
}

結果打印:


發佈了34 篇原創文章 · 獲贊 4 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章