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

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

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

    隨筆-42  評論-578  文章-1  trackbacks-0
    代理模式的一種常見的實現(xiàn)方案是,定義一個接口或抽象類,并派生出目標子類,和代理子類。我們要操作的是目標子類里的方法,而很多時候,我們需要為目錄子類中的方法增加額外的處理,如果增加日志功能、條件判斷等,這時候,就很有必要用到代理類。
    /**
     * 代理子類和目標子類的公共接口
     * 
    @author rongxinhua
     *
     
    */
    public interface MyInterface {
        
        
    public void doOperation();

    }

    /**
     * 目標子類
     * 
    @author rongxinhua
     *
     
    */
    public class RealClass implements MyInterface {

        
    /**
         * 我們要執(zhí)行的目標方法
         
    */
        @Override
        
    public void doOperation() {
            System.out.println(
    "doOperation");
        }

    }

    而在沒有使用代理模式的情況下,我們是這樣執(zhí)行目標方法的:
            RealClass realObj = new RealClass();
            realObj.doOperation();    
    //調(diào)用目標方法
    打印時輸出:
    doOperation


    而我們要加入額外的處理的話,就可以使用代理類了:
    /**
     * 代理子類
     * 
    @author rongxinhua
     *
     
    */
    public class ProxyClass implements MyInterface {

        
    private MyInterface realObj;    //目標子類對象
        
        
    public ProxyClass(MyInterface realObj) {
            
    this.realObj = realObj;
        }
        
        
    /**
         * 調(diào)用目標子類的方法,并在其中加入了前置處理和后置處理
         
    */
        @Override
        
    public void doOperation() {
            doBefore();
            realObj.doOperation();
            doAfter();
        }
        
        
    /**
         * 目標方法調(diào)用前的相關(guān)處理
         
    */
        
    private void doBefore() {
            System.out.println(
    "doBefore");
        }
        
        
    /**
         * 目標方法調(diào)用后的相關(guān)處理
         
    */
        
    private void doAfter() {
            System.out.println(
    "doAfter");
        }

    }

    有了代理類,我們可以這樣執(zhí)行目標方法:
            ProxyClass proxyObj = new ProxyClass(new RealClass());
            proxyObj.doOperation();    
    //通過代理對象調(diào)用doOperation方法

    打印時輸出:
    doBefore
    doOperation
    doAfter

    本文只是代理模式的在Java中的簡單使用,而代理模式與Java反射機制的整合,為Java組件開發(fā)增加了強大的生命力,有興趣的朋友可看我另一個博客中的文章:探討代理模式與Java反射機制的應用



    本文原創(chuàng),轉(zhuǎn)載請注明出處,謝謝!http://m.tkk7.com/rongxh7(心夢帆影JavaEE技術(shù)博客)
        

    posted on 2010-03-31 16:00 心夢帆影 閱讀(5849) 評論(2)  編輯  收藏 所屬分類: JavaSE

    評論:
    # re: Java的代理模式(通過公共接口實現(xiàn)) 2010-04-02 09:24 | wangchangbing
    很簡單的例子   回復  更多評論
      
    # re: Java的代理模式(通過公共接口實現(xiàn)) 2011-10-13 20:18 | andysuo
    介紹的很不錯,新手一看就明白  回復  更多評論
      
    主站蜘蛛池模板: 18禁止观看免费私人影院| 亚洲国产一区国产亚洲 | 亚洲AV中文无码乱人伦在线视色| 免费jjzz在在线播放国产| 国产亚洲精品免费视频播放| 亚洲国产高清在线| 日韩视频免费在线观看| 无码日韩人妻av一区免费| 亚洲 小说区 图片区 都市| 久久亚洲AV成人无码国产| 真正全免费视频a毛片| 中文字幕久精品免费视频| 女人与禽交视频免费看| 亚洲人成色7777在线观看| 77777午夜亚洲| 免费萌白酱国产一区二区三区 | 欧洲美熟女乱又伦免费视频| 亚洲中文字幕无码久久精品1| 亚洲乱码一二三四区乱码| 最近免费中文字幕大全| 亚洲高清无在码在线无弹窗| 一级黄色毛片免费看| 日韩免费一区二区三区在线播放| 亚洲午夜久久久久妓女影院| 免费av片在线观看网站| 亚洲精品无码av人在线观看| 国产AV无码专区亚洲AV麻豆丫| 国产精品永久免费10000| 亚洲熟妇无码八V在线播放| 全部免费毛片在线播放| 国产av无码专区亚洲国产精品| 国产亚洲Av综合人人澡精品| 国产午夜亚洲精品国产成人小说| 久久久高清日本道免费观看| 色吊丝最新永久免费观看网站| 一级特黄aaa大片免费看| 老色鬼久久亚洲AV综合| 国产无遮挡色视频免费视频| 亚洲精品中文字幕| 成人免费淫片在线费观看| 久久不见久久见免费影院www日本|