免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
大話設計模式筆記(五)の代理模式

舉個栗子

故事是這樣的...

一個小伙子喜歡上了隔壁班的一個妹子,但是又不認識,也害羞不好意思主動去說話,于是拜托了同樣在這個班的一個朋友去傳遞自己想要送的禮物。。。

代碼實現(xiàn)

該模式就不上什么簡單實現(xiàn)了,直奔完整實現(xiàn)。

被追求者

/**
 * 被追求者
 * Created by callmeDevil on 2019/6/29.
 */
public class SchoolGirl {

    private String name;

    public SchoolGirl(String name){
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

想要送的禮物

/**
 * 送禮物
 * Created by callmeDevil on 2019/6/29.
 */
public interface GiveGift {

    /**
     * 送洋娃娃
     */
    void giveDolls();

    /**
     * 送鮮花
     */
    void giveFlowers();

    /**
     * 送巧克力
     */
    void giveChocolate();

}

追求者

/**
 * 追求者
 * Created by callmeDevil on 2019/6/29.
 */
public class Pursuit implements GiveGift {

    SchoolGirl mm;

    public Pursuit(SchoolGirl mm) {
        this.mm = mm;
    }

    @Override
    public void giveDolls() {
        System.out.println(mm.getName() + " 送你洋娃娃!");
    }

    @Override
    public void giveFlowers() {
        System.out.println(mm.getName() + " 送你鮮花!");
    }

    @Override
    public void giveChocolate() {
        System.out.println(mm.getName() + " 送你巧克力!");
    }

}

代替追求者的人

/**
 * 代替追求者的人
 * Created by callmeDevil on 2019/6/29.
 */
public class Proxy implements GiveGift {

    Pursuit gg;

    public Proxy(SchoolGirl mm) {
        // 禮物實際上是追求者買來送的,這個人只是負責傳遞禮物
        this.gg = new Pursuit(mm);
    }

    @Override
    public void giveDolls() {
        gg.giveDolls();
    }

    @Override
    public void giveFlowers() {
        gg.giveFlowers();
    }

    @Override
    public void giveChocolate() {
        gg.giveChocolate();
    }

}

測試

/**
 * 代理模式測試
 * Created by callmeDevil on 2019/6/29.
 */
public class Test {

    public static void main(String[] args) {
        SchoolGirl jiaojiao = new SchoolGirl("李嬌嬌");
        Proxy proxy = new Proxy(jiaojiao);
        proxy.giveDolls();
        proxy.giveFlowers();
        proxy.giveChocolate();
    }

}

測試結果

李嬌嬌 送你洋娃娃!
李嬌嬌 送你鮮花!
李嬌嬌 送你巧克力!

代理模式

定義

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

UML圖

代碼實現(xiàn)

參見上述栗子的代碼啦,此處不再重復。

代理分類與應用

  • 遠程代理,也就是為一個對象在不同的地址空間提供局部代表。這樣可以隱藏一個對象存在于不同地址空間的事實。例如,在.NETweb項目中引用一個WebService時,會在項目中生成一個WebReference的文件夾和一些文件,其實它們就是代理,使得客戶端程序調用代理就可以解決遠程訪問的問題。
  • 虛擬代理,是根據需要創(chuàng)建開銷很大的對象。通過它來存放實例化需要很長時間的真實對象。例如,打開一個很大的HTML網頁時,里面可能含有很多的文字和圖片,但還是可以很快的打開,此時所看到的是所有的文字,但圖片是一張張下載后才能看到的,那些未打開的圖片框,就是通過虛擬代理來替代真實的圖片,存儲了真實圖片的路徑和尺寸。
  • 安全代理,用來控制真實對象訪問時的權限。一般應用于對象應該有不同的訪問權限的時候。
  • 智能指引,是指當調用真實的對象時,代理處理另外一些事。例如,計算機的引用次數,這樣當該對象沒有引用時,可以自動釋放它;或當第一次引用一個持久對象時,將它裝入內存;或在訪問一個實際對象時,檢查是否已經鎖定它,以確保其他對象不能改變它。

總結

  • 代理模式其實就是在訪問對象時引入一定程度間接性,因為這種間接性,可以附加多種用途。
  • 代理就是真實對象的代表。

故事結局...

是的,追求者與被追求者沒有結果,反倒是替代送禮物的人與被追求者認識并好上了。。。誰讓追求者不主動,不是活該是啥。。。

本站僅提供存儲服務,所有內容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
大話設計-代理模式
深入理解設計模式(23):代理模式
代理模式
TestCGLIB03 .Java
java反射機制與動態(tài)代理(三)
解讀JDK的動態(tài)代理
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服