JDK動態代理(自我總結)

          Posted on 2011-12-19 16:32 胥子 閱讀(169) 評論(0)  編輯  收藏
          實現步驟:
          1.新建生成動態代理對象類,實現java.lang.reflect.InvocationHandler接口。
          2.新建一個方法用與生成代理對象并返回對象。
          3.實現接口方法invoke,這也是切面處理的核心操作地。
          -------上層接口 
          public interface Service {
              
          void doService(String name);
          }

           -----接口實現
          public class ServiceImpl implements Service{

              @Override
              
          public void doService(String name ) {
                  System.out.println(
          "hello " + name);
              }


          }



           -------實現InvocationHandler接口的類
          public class ServiceDynamicProxy implements InvocationHandler {
              
          private Object targetObject ;
              
          //把要代理的類傳進去
              public Object createProxy(Object targetObject){
                  
          this.targetObject = targetObject ;
                  
          return  Proxy.newProxyInstance(targetObject.getClass().getClassLoader(),
                                          targetObject.getClass().getInterfaces(), 
          this);
              }

              
          //invoke方法會自動調用,切面處理
              @Override
              
          public Object invoke(Object proxy, Method method, Object[] args)
                      
          throws Throwable {
                  checkSecurity();
                  System.out.println(proxy.getClass().getName());
                  Object result 
          = null ;
                  result 
          = method.invoke(this.targetObject,args);
                  
          return result;
                  
              }

              
          public void checkSecurity(){
                  System.o ut.println(
          "check the security ");
              }


          }
          -------測試類


          public class DynamicProxyClient {
              
          public static void main(String[] args) {
                  ServiceDynamicProxy dynamicProxy 
          = new ServiceDynamicProxy();
                  Service service 
          = (Service)dynamicProxy.createProxy(new ServiceImpl());
                  service.doService(
          "xuyiyu");
              }

          }



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


          網站導航:
           

          posts - 2, comments - 0, trackbacks - 0, articles - 0

          Copyright © 胥子

          主站蜘蛛池模板: 宜川县| 张家港市| 甘孜县| 崇义县| 华池县| 廉江市| 白玉县| 元谋县| 麟游县| 白银市| 海林市| 乌兰察布市| 横山县| 台东县| 临高县| 峨眉山市| 略阳县| 孝昌县| 广丰县| 高台县| 宁乡县| 巴彦淖尔市| 濉溪县| 于田县| 资源县| 阳高县| 株洲市| 甘孜| 寿宁县| 长寿区| 澎湖县| 清河县| 旌德县| 宁乡县| 大新县| 九寨沟县| 图木舒克市| 临沭县| 邵阳县| 那坡县| 宁阳县|