动态代理(JAVA设计模式)
来源:互联网 发布:淘宝优惠券怎么领取 编辑:程序博客网 时间:2024/06/05 17:37
静态代理只能对实现指定接口的类进行代理,当我想为多个接口中的多个方法前后添加逻辑的时候使用静态代理会变得十分麻烦。
动态代理可以满足我的要求。
使用JDK的动态代理十分简单。
需要用到的类有:
java.lang.reflect.InvocationHandler
java.lang.reflect.Proxy
java.lang.reflect.Method
public interface Moveable { public void run();}public interface Stopable { public void stop();}
//需要代理的类public class Car implements Moveable,Stopable{ public void run() { System.out.println("car move"); } public void stop() { System.out.println("car stop"); }}
//实现InvocationHandler接口,定义需要添加的逻辑,可以是时间记录,日志记录,事务等。class LogHander implements InvocationHandler{Object obj;public LogHander(Object obj) {this.obj = obj;}public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {System.out.println(" log hander start...");Object result = method.invoke(obj, args);System.out.println(" log hander end...");return result;}}
public class Client {public static void main(String[] args) { Car car = new Car(); LogHander h = new LogHander(car); Object proxyCar = java.lang.reflect.Proxy.newProxyInstance(car.getClass().getClassLoader(), new Class[] { Moveable.class, Stopable.class }, h); Moveable m = (Moveable) proxyCar; m.run(); Stopable s = (Stopable) proxyCar; s.stop(); }}
- java代理设计模式(静态代理与动态代理)
- 动态代理(JAVA设计模式)
- java设计模式(一):动态代理
- -java 动态代理设计模式
- java动态代理设计模式
- java 设计模式 动态代理
- java设计模式--动态代理
- java模式设计- 动态代理
- Java设计模式(七):代理模式Proxy(静态代理模式+动态代理模式)
- 设计模式(代理模式--动态代理)
- 【设计模式】代理模式(动态代理)
- java设计模式-代理模式(静态代理,动态代理)
- JAVA设计模式--代理模式(动态)(一)
- JAVA设计模式--代理模式(动态)(二)
- Java设计模式(四)之动态代理模式
- java设计模式之代理模式 (静态&动态)
- JAVA设计模式(三)静态与动态代理模式
- Java设计模式-----Proxy模式(动态代理)
- 图像处理
- 第三周 项目二 修旱冰场
- ImageMagick 中文手册
- 实例分析C++ 权限控制及const用法
- MAC系统安装/卸载cocos2d-x
- 动态代理(JAVA设计模式)
- 树形控件QTreeView使用自定义模型model
- 关于有重边图的双连通分量
- 如何给虚拟机安装xp系统
- const用于指针
- 判断数组的长度,判断数组中重复的数字及其出现的次数
- mysql查看所有存储过程,函数,视图,触发器,表,分页
- get_word_count
- arcengine的编辑 捕获