yuyee

          JDK代理

          JDK代理以前性能不怎么樣,但1.6版本卻有很大提升
          /**
           * 行為接口
           * 
           * @author Administrator
           * 
           */
          public interface Study {
          public void doStudy();
          }
          /**
           * 目標對象
           * 
           * @author Administrator
           * 
           */
          public class StudyImpl implements Study {

          @Override
          public void doStudy() {
          System.out.println("study jdk proxy");
          }

          }


          /**
           * 代理類
           * @author Administrator
           *
           */
          public class JDKProxy implements InvocationHandler {

          private Study s;

          public JDKProxy(Study s) {
          this.s = s;
          }

          @Override
          public Object invoke(Object proxy, Method method, Object[] args)
          throws Throwable {
          System.out.println("before jdkproxy");
          method.invoke(s, args);
          System.out.println("after jdkproxy");
          return null;
          }
          }

          應用中進行調用:
          public class Test {
          public static void main(String[] args) throws SecurityException,
          NoSuchMethodException, IllegalArgumentException,
          InstantiationException, IllegalAccessException,
          InvocationTargetException {
          Class clazz = StudyImpl.class;//獲取目標類的Class對象
          Study st = new StudyImpl();//實例化一個目標類
          Class proxClass = Proxy.getProxyClass(clazz.getClassLoader(), clazz
          .getInterfaces());//通過Proxy靜態方法,獲取一個于目標類實現同樣接口的Class對象,也可以說是兄弟類
          Constructor c = proxClass
          .getConstructor(new Class[] { InvocationHandler.class });//給這個類一個指定的公開的構造方法
          Study ds = (Study) c.newInstance(new Object[] { new JDKProxy(st) });//實例化一個代理類
          }
          }

          posted on 2010-10-25 00:20 羔羊 閱讀(166) 評論(0)  編輯  收藏 所屬分類: aop

          主站蜘蛛池模板: 宜昌市| 揭阳市| 盐池县| 卢氏县| 济南市| 涡阳县| 东兴市| 玉山县| 紫阳县| 东莞市| 永丰县| 百色市| 青海省| 绥江县| 湖州市| 土默特左旗| 长阳| 肃南| 敦煌市| 宜良县| 秭归县| 界首市| 大名县| 桐梓县| 安达市| 奇台县| 潮州市| 手游| 汨罗市| 怀安县| 枣阳市| 陇西县| 宁城县| 犍为县| 于田县| 河北省| 保定市| 台东县| 泗阳县| 通化县| 昌图县|