动态代理是为了弥补静态代理的不足,概念等同于普通的代理模式,在实现上稍有区别。
涉及一个接口一个类:
InvocationHandler Proxy
角色代码准备:
抽象角色:
public interface IBook { String getBookName(); String getBookPress(); }
真实角色:
public class JavaBook implements IBook { @Override public String getBookName() { return "Java 程序设计"; } @Override public String getBookPress() { return "上海科学出版社"; } }
其他行为:
public class Something { public void start() { System.out.println("获取图书价格成功"); } public void end() { System.out.println("后续可以阅读"); } }
代理角色:
public class DynamicProxyBook implements InvocationHandler { private Object target; private Object others; public Object bind(Object target, Object others) { this.others = others; this.target = target; return Proxy.newProxyInstance(target.getClass().getClassLoader(), target.getClass() .getInterfaces(), this); } @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { Class clazz = this.others.getClass(); Method start = clazz.getDeclaredMethod("start"); start.invoke(this.others); Object result = method.invoke(target); System.out.println("result:"+result); Method end = clazz.getDeclaredMethod("end"); start.invoke(this.others); return result; } }
测试代码:
public static void main(String[] args) { IBook book = (IBook) new DynamicProxyBook().bind(new JavaBook(), new Something()); book.getBookName(); book.getBookPress(); }
不足:
1.接口必须有具体的显示实现类而不能动态绑定
相关推荐
JAVA动态代理模式.pdf
动态代理模式 适配器模式 实现,都可以运行,有一部分注解
自己总结的代理模式和Java中的动态代理模式,有源码
适用于初探java动态代理模式,精简易懂。
对代理模式与Java动态代理类的理解说明
java中的装饰模式及动态代理模式示例源码,并且手写数据库连接池,以及展示动态代理模式在连接池中的使用
Java设计模式——代理设计模式(静态代理和动态代理) 各种情况例子源码
1:静态代理出现的实际背景,静态代理时如何演化成动态代理 2: 动态代理demo 举例实际应用场景(载入数据库驱动的时候,使用AIDL与系统Servic进行通信) 3: 动态代理使用到基础理论:ClassLoader 加载.class字节码...
主要介绍了Java动态代理模式简单案例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
Java 动态代理详解(代理模式+静态代理+JDK动态代理+CGLIB动态代理)
用java实现代理模式,使用房屋中介的现实例子进行代理模式的说明
- 代理模式 - 静态代理与动态代理 - 常见的动态代理实现 - JDK Proxy - CGLIB - JDK Proxy 和 CGLIB 的对比 - 动态代理的实际应用 - Spring AOP 说在前面:今天我们来聊一聊 Java 中的代理,先来聊聊故事...
Java 代理模式: 详见:http://blog.csdn.net/q610098308/article/details/74144046
详细而又简单的讲述了java动态代理设计模式
JAVA设计模式之代理模式实例
Java 动态代理 借用电子商务模式来说明
带视频讲解的代理模式之动态代理,有源代码和课件,很有帮助
Java设计模式之代理模式(结构)Java设计模式之代理模式(结构)Java设计模式之代理模式(结构)Java设计模式之代理模式(结构)Java设计模式之代理模式(结构)