代理设计模式:
代理对象 增强后的对象
目标对象 被增强的对象
分为静态代理和动态代理
静态代理
实现方式:继承或聚合(实现接口)
动态代理
模拟的动态代理
1 | package com.hu.proxy; |
测试:
1 | public class Test { |
这种方式实现由缺点:要生成文件、动态编译文件 class、需要一个URLclassloader、软件性能的最终体现在IO操作。
升级版,简单模拟jdk动态代理
Proxy.java
1 | package com.hu.proxy1; |
MyInvocationHandler
1 | package com.hu.proxy1; |
MyInvocationHandlerImpl
1 | package com.hu.proxy1; |
测试:
1 | package com.hu.proxy1; |
JDK动态代理
实现方法:通过Proxy的静态方法,通过接口反射得到得到字节码文件,使用ClassLoader将字节码文件加载到JVM,调用native方法生成代理对象。