您的位置:首页 > 编程语言 > Java开发

java动态代理的一个例子

2007-06-06 13:39 363 查看
动态代理是轻量级容器实现AOP拦截的一种主要方式。

 


IAandB.java




public interface IAandB ...{


 


 public void doSomething();




}


------------------------------------------------


A.java






public class A implements IAandB...{






 public void doSomething() ...{


  System.out.println("A.a();");


  


 }


}


-------------------------------------------------


B.java






public class B implements IAandB...{




 public void doSomething() ...{


  System.out.println("B.b();");


 }


}


-----------------------------------------------


Handler.java




import java.lang.reflect.InvocationHandler;


import java.lang.reflect.Method;






public class Handler implements InvocationHandler ...{


 private IAandB ab;






 public Handler(IAandB ab) ...{


  this.ab = ab;


 }




 public Object invoke(Object proxy, Method method, Object[] args)




   throws Throwable ...{


  Object obj = method.invoke(ab,args);


  return obj;


 }


}


------------------------------------------------------------------


Test1.java  测试类代码




import java.lang.reflect.InvocationHandler;


import java.lang.reflect.Proxy;






public class Test1 ...{




 public static void main(String[] args) ...{




  IAandB ab = new A();




  try ...{


   InvocationHandler ds = new Handler(ab);




   IAandB ab1 = (IAandB) Proxy.newProxyInstance(ab.getClass()


     .getClassLoader(), ab.getClass().getInterfaces(), ds);




   ab1.doSomething();






  } catch (Exception e) ...{


   e.printStackTrace();


  }


 }


}


--------------------------------------------------------------------





 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息