国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

輕松學會代理模式

Ali_ / 2649人閱讀

摘要:在代理模式中,我們創建具有現有對象的對象,以便向外界提供功能接口。注意事項和適配器模式的區別適配器模式主要改變所考慮對象的接口,而代理模式不能改變所代理類的接口。和裝飾器模式的區別裝飾器模式為了增強功能,而代理模式是為了加以控制。

代理模式

在代理模式(Proxy Pattern)中,一個類代表另一個類的功能。這種類型的設計模式屬于結構型模式。

在代理模式中,我們創建具有現有對象的對象,以便向外界提供功能接口。

介紹

意圖:為其他對象提供一種代理以控制對這個對象的訪問。

主要解決:在直接訪問對象時帶來的問題,比如說:要訪問的對象在遠程的機器上。在面向對象系統中,有些對象由于某些原因(比如對象創建開銷很大,或者某些操作需要安全控制,或者需要進程外的訪問),直接訪問會給使用者或者系統結構帶來很多麻煩,我們可以在訪問此對象時加上一個對此對象的訪問層。

何時使用:想在訪問一個類時做一些控制。

如何解決:增加中間層。

關鍵代碼:實現與被代理類組合。

應用實例

Windows 里面的快捷方式。

買火車票不一定在火車站買,也可以去代售點。 4、一張支票或銀行存單是賬戶中資金的代理。支票在市場交易中用來代替現金,并提供對簽發人賬號上資金的控制。 5、spring aop。

優點: 1、職責清晰。 2、高擴展性。 3、智能化。

缺點: 1、由于在客戶端和真實主題之間增加了代理對象,因此有些類型的代理模式可能會造成請求的處理速度變慢。 2、實現代理模式需要額外的工作,有些代理模式的實現非常復雜。

使用場景:按職責來劃分,通常有以下使用場景: 1、遠程代理。 2、虛擬代理。 3、Copy-on-Write 代理。 4、保護(Protect or Access)代理。 5、Cache代理。 6、防火墻(Firewall)代理。 7、同步化(Synchronization)代理。 8、智能引用(Smart Reference)代理。

注意事項: 1、和適配器模式的區別:適配器模式主要改變所考慮對象的接口,而代理模式不能改變所代理類的接口。 2、和裝飾器模式的區別:裝飾器模式為了增強功能,而代理模式是為了加以控制。

豬八戒去找高翠蘭結果是孫悟空變的,可以這樣理解:把高翠蘭的外貌抽象出來,高翠蘭本人和孫悟空都實現了這個接口,豬八戒訪問高翠蘭的時候看不出來這個是孫悟空,所以說孫悟空是高翠蘭代理類

以游戲買票為例:

創建一個接口 Ticket

public interface Ticket {

    void goToMap();

}

創建一個代理類,實現 該接口 ProxyTicket

public class ProxyTicket implements Ticket {

    private RealTicket realTicket;
    private String ticketName;

    public ProxyTicket(String ticketName) {
        this.ticketName = ticketName;
    }

    @Override
    public void goToMap() {
        System.out.println("開始進入地下城...");
        if(realTicket == null){
            realTicket = new RealTicket(ticketName);
        }
        realTicket.goToMap();
    }
}

創建一個具體類實現該接口 RealTicket

public class RealTicket implements Ticket{

    private String ticketName;

    public RealTicket(String ticketName) {
        this.ticketName = ticketName;
        buyTicket(ticketName);
    }

    @Override
    public void goToMap() {
        System.out.println("當前玩家擁有通行證,進入地下城...");
    }

    private void buyTicket(String ticketName){
        System.out.println("當前玩家沒有通行證,RealTicket開始購買" + ticketName);
    }


}

創建 MapDemo 測試:

public class MapDemo {

    public static void main(String[] args) {

        Ticket ticket = new ProxyTicket("深淵通行證");
        ticket.goToMap();
        System.out.println("再次挑戰");
        ticket.goToMap();


    }

}

測試結果

開始進入地下城...
當前玩家沒有通行證,RealTicket開始購買深淵通行證
當前玩家擁有通行證,進入地下城...
再次挑戰
開始進入地下城...
當前玩家擁有通行證,進入地下城...
當玩家進入地圖時會判斷是否擁有通行證,沒有則使用代理類RealTicket去購買

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/73661.html

相關文章

  • 畢業一年,從底薪2800中介轉行軟件測試工程師,輕松月薪14K

    摘要:年月份,從一個房產銷售轉變成月薪的軟件測試工程師,如果自己還沒有拿到多份入職,可能自己也不能相信自己也可以變得這么優秀。在學習軟件測試的道路上,其實自己也曾懷疑過自己的能力。后來通過之前做銷售的同事了解到已經有人轉行做過測試了。 塵埃未定,你我皆是黑馬,軟件測試這個崗位也可帶我們乘風破浪。 ...

    dayday_up 評論0 收藏0
  • 100行代碼讓您學會JavaScript原生的Proxy設計模式

    摘要:面向對象設計里的設計模式之代理模式,相信很多朋友已經很熟悉了。代表當前執行方法的實例,即方法調用者。代表具體的方法名稱?,F在我們再次調用,傳入構造器返回的代理對象打印輸出,代理邏輯生效了和的一樣優雅地實現了代理設計模式。 showImg(https://segmentfault.com/img/remote/1460000016760603);面向對象設計里的設計模式之Proxy(代理...

    txgcwm 評論0 收藏0
  • 輕松學會觀察者模式

    摘要:觀察者模式當對象間存在一對多關系時,則使用觀察者模式。觀察者模式屬于行為型模式。觀察者模式沒有相應的機制讓觀察者知道所觀察的目標對象是怎么發生變化的,而僅僅只是知道觀察目標發生了變化。 觀察者模式 當對象間存在一對多關系時,則使用觀察者模式(Observer Pattern)。比如,當一個對象被修改時,則會自動通知它的依賴對象。觀察者模式屬于行為型模式。 介紹 意圖:定義對象間的一種一...

    hightopo 評論0 收藏0
  • 輕松學會責任鏈模式

    摘要:設計模式責任鏈模式顧名思義,責任鏈模式為請求創建了一個接收者對象的鏈。這種模式給予請求的類型,對請求的發送者和接收者進行解耦。增強給對象指派職責的靈活性。通過改變鏈內的成員或者調動它們的次序,允許動態地新增或者刪除責任。 設計模式 - 責任鏈模式 顧名思義,責任鏈模式(Chain of Responsibility Pattern)為請求創建了一個接收者對象的鏈。這種模式給予請求的類型...

    cheukyin 評論0 收藏0
  • 假如時光倒流,我會這么學習Java

    摘要:看起來沒有集合框架,線程,等那么耀眼,但它可是很多框架的基礎啊回復反射查看相關文章,先把基礎學會,后面的得用到它。 回頭看看, 我進入Java 領域已經快15個年頭了, 雖然學的也一般, 但是分享下我的心得,估計也能幫大家少走點彎路。[入門]我在2001年之前是C/C++陣營, 有C和面向對象的基礎, 后來轉到Java ,發現沒有指針的Java真是好簡單, 另外Java 的類庫好用的讓...

    bladefury 評論0 收藏0

發表評論

0條評論

Ali_

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<