模拟JDK动态代理(JAVA设计模式)
JDK6提供了Javacompiler,StandardJavaFileManager,Iterable实现对.java文件编译的方法。
框架在实现代理的时候可以使用CGLIB直接生成2进制文件,不需要生成.java文件。
public class Client {public static void main(String[] args) throws Exception {InvocationHandler h = new LogHandler(new Tank());//告诉代理类,我需要添加什么逻辑。Moveable m = (Moveable) Proxy.newProxyInstance(Moveable.class, h);//返回代理的对象。m.move();//实际这里是调用添加过逻辑的代理类的方法。m.stop();}}