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

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

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

    posts - 241,  comments - 116,  trackbacks - 0

    動態代理: 代理類需要實現InvocationHandler接口。

    使用場合舉例: 如果需要委托類處理某一業務,那么我們就可以先在代理類中,對客戶的權限、各類信息先做判斷,如果不滿足某一特定條件,則將其攔截下來,不讓其代理。

    ServiceProxy.java

        package com.ibm.dynamicproxy;  
          
        import java.lang.reflect.InvocationHandler;  
        import java.lang.reflect.Method;  
        import java.lang.reflect.Proxy;  
          
        public class ServiceProxy implements InvocationHandler {  
          
            private Object target;  
              
            public ServiceProxy(Object target){  
                this.target = target;  
            }  
              
            @Override  
            public Object invoke(Object proxy, Method method, Object[] args)  
                    throws Throwable {  
                Object result = null;  
                result = method.invoke(target, args);  
                return result;  
            }  
              
            /**
             * @param target
             * @return 返回委托類接口的實例對象
             */  
            public Object getProxyInstance(){  
                return Proxy.newProxyInstance(target.getClass().getClassLoader(),   
                        target.getClass().getInterfaces(), this);  
            }  
        }  
    ServiceTest.java(測試類)

        package com.ibm;  
          
        import com.ibm.delegate.Service;  
        import com.ibm.delegate.ServiceImpl;  
        import com.ibm.dynamicproxy.ServiceProxy;  
          
        public class ServiceTest {  流行線
          
            /**
             * @param args
             */  
            public static void main(String[] args) {  
                //創建委托類實例,即被代理的類對象  
                ServiceImpl target = new ServiceImpl();  
                //創建動態代理類  
                ServiceProxy proxy = new ServiceProxy(target);  
                Service service = (Service) proxy.getProxyInstance();  
                String date = service.queryDate();  
                System.out.println(date);  
                int result = service.sub(10, 20);  
                System.out.println("10-20 = "+result);  
            }  
        }  

    修改兩個方法,做測試:

    ServiceImpl.java


        public String ownMethod(){  
            System.out.println("It's my own method");  
            return "user";  
        }  
    ServiceProxy.java

        @Override  
        public Object invoke(Object proxy, Method method, Object[] args)  
                throws Throwable {  
            Object result = null;  
            if(!(target instanceof ServiceImpl)){  
                System.out.println("不能代理該對象");  
                return result;  
            }else if(!((ServiceImpl)target).ownMethod().equals("admin")){  
                System.out.println("權限不夠");  
                return result;  
            }  
            result = method.invoke(target, args);  
            return result;  
        }  

    posted on 2012-06-27 15:36 墻頭草 閱讀(564) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
    博客園   IT新聞   Chat2DB   C++博客   博問  
     
    人人游戲網 軟件開發網 貨運專家
    主站蜘蛛池模板: 亚洲成a人片在线观看中文!!!| 亚洲午夜福利精品久久| 亚洲今日精彩视频| 91视频精品全国免费观看| 国产成人亚洲综合| 中文字幕免费视频精品一| 黑人大战亚洲人精品一区| a视频免费在线观看| 亚洲av成人无码久久精品| 99热这里有免费国产精品| 亚洲精品电影在线| 成人午夜视频免费| 狼人大香伊蕉国产WWW亚洲| 午夜亚洲国产成人不卡在线| jizz在线免费播放| 午夜影视日本亚洲欧洲精品一区| 久久成人免费大片| ww亚洲ww在线观看国产| 国产成人高清精品免费鸭子| 人人爽人人爽人人片A免费| 亚洲免费观看视频| 久久精品免费全国观看国产| 亚洲av日韩精品久久久久久a| 亚洲毛片av日韩av无码| 精品亚洲永久免费精品| 亚洲一级毛片中文字幕| 免费**毛片在线播放直播| a在线免费观看视频| 亚洲jjzzjjzz在线观看| 亚洲人成人无码网www国产| 桃子视频在线观看高清免费视频| 亚洲日韩中文字幕天堂不卡| 国产精品另类激情久久久免费 | 精品亚洲成在人线AV无码| 成人永久免费高清| 国产啪精品视频网站免费尤物| 亚洲va在线va天堂va手机| 久久亚洲AV无码西西人体| av无码国产在线看免费网站| 国产成人综合久久精品亚洲| 亚洲AV日韩AV天堂久久|