天天看點

代理模式——java設計模式

代理模式(Proxy Pattern)

GoF中給出的代理模式的定義為:

代理模式給某一個對象提供一個代理或占位符,并由代理對象來控制對原對象的通路。

代理模式的英文叫做Proxy或Surrogate,它是一種對象結構型模式。

代理模式根據其目的和實作可分為很多種類,常用的代理模式包括如下幾種:

(1)遠端代理(Remote Proxy)————為一個位于不同的位址空間的對象提供一個本地的代理對象,這個不同的位址空間可以是在同一台主機中,也可以是在另一台主機中,遠端代理又稱為大使(Ambassador)

(2)虛拟代理(Virtual Proxy)————如果需要建立一個資源消耗較大的對象,先建立一個消耗相對較小的對象來表示,真實對象隻在需要時才會被真正建立。

(3)保護代理(Protect Proxy)————控制一個目标操作的結果提供臨時的存儲空間,以便多個用戶端可以共享這些結果。

(4)緩沖代理(Cache Proxy)————為某一個目标操作的結果提供臨時的存儲空間,以便多個用戶端可以共享這些結果。

(5)隻能引用代理(Smart Reference Proxy)————當一個對象被引用時,提供一些額外的操作,例如将對象被調用的次數記錄下來。

代碼實作:

1.抽象主題類——BuyTicket.java

public interface BuyTicket {
    public void showticket();
}
           

2.具體主題類——Train.java

public class Train implements BuyTicket {
    @Override
    public void showticket() {
        System.out.println("one ticket");
    }
}
           

3.代理角色類——TicketCenter.java

public class TicketCenter implements BuyTicket {
    private BuyTicket ticket;

    public TicketCenter(BuyTicket ticket) {
        this.ticket = ticket;
    }

    @Override
    public void showticket() {
        ticket.showticket();
    }

    public void buy() {
        System.out.println("by proxy");
        showticket();
    }
}
           

4.用戶端測試類

public class ProxyPattern {
    public static void main(String args[]) {
        BuyTicket x = new Train();
        TicketCenter y = new TicketCenter(x);
        y.buy();
    }
}
           

運作結果:

by proxy
one ticket
           

如果,您認為閱讀這篇部落格讓您有些收獲,不妨拿出手機【微信掃一掃】

代理模式——java設計模式

您的資助是我最大的動力!

金額随意,歡迎來賞!

繼續閱讀