<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Dev@Free

    zJun's Tech Weblog

    [GoF23] java中的Proxy模式

    代理(Proxy)模式,顧名思義就是對象之間不直接發生聯系,而是通過中間的代理人進行溝通。這種關系在現在的娛樂圈中普遍存在:明星通常都有經紀人來代理自己的演出事宜,而不是直接去聯系演出商。下面就通過這個實際中的例子來說明代理模式。
    首先畫出關系類圖


    演藝人士:包括經紀人和明星,都屬于娛樂圈中人。
    /**
    ?*?演藝人士
    ?*?
    ?*?
    @author ?zJun
    ?
    */

    public ? interface ?Artist? {
    ????
    /**
    ?????*?演出活動
    ?????
    */

    ????
    public ? void ?show(String?showType);
    }

    經紀人
    /**
    ?*?經紀人(參考《Java與模式》-?"代理(Proxy)模式"一章部分代碼)
    ?*?
    ?*?
    @author ?zJun
    ?*?
    ?
    */

    public ? class ?Broker? implements ?Artist,?InvocationHandler? {

    ????
    private ?String?SIGN? = ? " [經紀人] "
    ;

    ????
    // ?旗下明星

    ???? private ?Star?star;

    ????
    /**
    ?????*?簽訂和約
    ?????
    */

    ????
    public ? void ?subcontract()? {
    ????????System.out.println(SIGN?
    + ? " 簽訂和約 "
    );
    ????}


    ????
    /**
    ?????*?經紀人代明星打理一切演出事宜
    ?????
    */

    ????
    public ? void ?show(String?showType)? {
    ????????
    // ?簽約

    ????????subcontract();

    ????????
    // ?通知明星演出

    ???????? if ?(star? == ? null )? {
    ????????????star?
    = ? new
    ?Star();
    ????????}

    ????????star.show(showType);

    ????????
    // ?交稅
    ????????payTax();
    ????}


    ????
    /**
    ?????*?演出后交稅
    ?????
    */

    ????
    public ? void ?payTax()? {
    ????????System.out.println(SIGN?
    + ? " 演出后交稅 "
    );
    ????}

    }


    明星
    /**
    ?*?明星
    ?*?
    ?*?
    @author ?zJun
    ?*?
    ?
    */

    public ? class ?Star? implements ?Artist? {

    ????
    private ?String?SIGN? = ? " [明星] "
    ;

    ????
    public ? void ?show(String?showType)?
    {
    ????????System.out.println(SIGN?
    +
    ?showType);
    ????}


    }

    贊助商:通過聯系經紀人安排明星演出
    /**
    ?*?贊助商:?與經紀人聯系安排演出事宜
    ?*?
    ?*?
    @author ?zJun
    ?
    */

    public ? class ?Patron? {

    ????
    /**
    ?????*?
    @param ?args
    ?????
    */

    ????
    public ? static ? void ?main(String[]?args)? {
    ????????Broker?broker?
    = ? new
    ?Broker();
    ????????broker.show(
    " 演電影 "
    );
    ????????broker.show(
    " 拍電視 "
    );
    ????????broker.show(
    " 出唱片 "
    );
    ????????broker.show(
    " 演唱會 "
    );
    ????}


    }

    [運行結果]
    [ 經紀人 ] 簽訂和約
    [ 明星 ]
    演電影
    [ 經紀人 ]
    演出后交稅
    [ 經紀人 ]
    簽訂和約
    [ 明星 ]
    拍電視
    [ 經紀人 ]
    演出后交稅
    [ 經紀人 ]
    簽訂和約
    [ 明星 ]
    出唱片
    [ 經紀人 ]
    演出后交稅
    [ 經紀人 ]
    簽訂和約
    [ 明星 ]
    演唱會
    [ 經紀人 ] 演出后交稅

    參考資料
    《Java與模式》 閻宏 電子工業出版社

    posted on 2006-03-21 23:34 zJun's帛羅閣 閱讀(4205) 評論(4)  編輯  收藏 所屬分類: 設計模式

    評論

    # re: [GoF23] java中的Proxy模式 2006-03-22 13:59 guitarpoet

    有趣,通俗易懂,符合面向對象的概念啊,哈哈哈  回復  更多評論   

    # re: [GoF23] java中的Proxy模式 2006-03-22 14:08 guitarpoet

    不過你并沒有真正的把Java的Proxy的概念用出來。
    首先Broker不應該是Artist。
    Broker只應該是InvocationHandler,Artist代理是Proxy的newProxyInstance方法自動構造出來的,Broker自己去找Artist(當然也可以采用IOC讓Artist自己去找Broker),通過InvocationHandler的invoke方法截獲Show方法,找適應的Artist去處理。
    這個例子需要改進一下。  回復  更多評論   

    # re: [GoF23] java中的Proxy模式 2006-03-22 16:56 zJun

    @guitarpoet
    是的。原本是要接著寫Java API提供的實現Proxy模式的(就像你說的那樣通過InvocationHandler和Proxy來實現),只是昨晚時間太晚了,只好先寫到這里,先介紹Proxy的概念,留到今天再寫了。  回復  更多評論   

    # re: [GoF23] java中的Proxy模式 2008-01-23 15:22 Star

    Broker類實現InvocationHandler接口為什么不見invoke()方法?  回復  更多評論   

    導航

    <2006年3月>
    2627281234
    567891011
    12131415161718
    19202122232425
    2627282930311
    2345678

    統計

    常用鏈接

    留言簿(15)

    隨筆分類

    隨筆檔案

    相冊

    收藏夾

    博客

    文檔

    站點

    論壇

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 波多野结衣视频在线免费观看| 亚洲精品高清国产一线久久| 亚洲黄片手机免费观看| 亚洲精品亚洲人成人网| 天天影视色香欲综合免费| 亚洲砖码砖专无区2023| 免费少妇a级毛片| 久久国产精品一区免费下载| 亚洲一本之道高清乱码| 亚洲精品国产综合久久一线| 免费人成在线观看网站品爱网 | 国产一区二区免费视频| 中文字幕 亚洲 有码 在线 | 亚洲欧美国产国产一区二区三区| 亚洲人成无码www久久久| 美丽的姑娘免费观看在线播放| 亚洲AV无码一区二区三区鸳鸯影院| 亚洲一区二区三区香蕉| 久久精品女人天堂AV免费观看| av网站免费线看| 国产婷婷综合丁香亚洲欧洲| 亚洲日韩在线观看免费视频| 无遮免费网站在线入口| 在线视频网址免费播放| 亚洲人成自拍网站在线观看| 亚洲AV无码一区东京热| 国产精品免费视频网站| 真实国产乱子伦精品免费| 免费手机在线看片| 亚洲国产日韩综合久久精品| 久久精品亚洲综合一品| 亚洲精品在线视频| 国产精品国产免费无码专区不卡 | 亚洲福利视频一区二区三区| 亚洲Av无码乱码在线观看性色| 每天更新的免费av片在线观看| 一级毛片在线免费视频| 亚洲午夜无码久久| 91大神亚洲影视在线| 区久久AAA片69亚洲| 四虎永久在线精品视频免费观看|