<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 墻頭草 閱讀(571) 評論(0)  編輯  收藏

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


    網站導航:
     
    人人游戲網 軟件開發網 貨運專家
    主站蜘蛛池模板: 69精品免费视频| 免费在线观看毛片| 老牛精品亚洲成av人片| 免费又黄又爽又猛的毛片| 91精品成人免费国产| 亚洲av无码不卡久久| 亚洲福利精品电影在线观看| 日本免费一区二区久久人人澡| 亚洲va乱码一区二区三区| 免费国产成人午夜电影| 久久青草免费91观看| 亚洲国产成人精品无码区二本| 亚洲国产成人片在线观看无码| 日韩av无码成人无码免费| 黄床大片免费30分钟国产精品| 精品日韩99亚洲的在线发布| 久久亚洲2019中文字幕| 国产精品久久久久久久久久免费| 黄床大片免费30分钟国产精品 | 精品日韩99亚洲的在线发布| 亚洲一级特黄大片无码毛片| 国产成人免费午夜在线观看 | 国产一级婬片A视频免费观看| 亚洲伊人久久大香线蕉在观| 亚洲一级特黄大片无码毛片| 女人张开腿等男人桶免费视频| 在线播放免费人成毛片乱码| 国产精品亚洲五月天高清| 亚洲国产精品人久久电影| 亚洲午夜久久久影院| 免费中文字幕一级毛片| 亚洲第一成年免费网站| 日本免费高清视频| 国产免费福利体检区久久| 亚洲AV无码一区二区三区牲色| 91嫩草亚洲精品| 久久精品7亚洲午夜a| 国产乱辈通伦影片在线播放亚洲 | 国产成年无码久久久免费| 免费人成视频在线播放| 亚洲精品无码你懂的|