动态代理(JAVA设计模式)
静态代理只能对实现指定接口的类进行代理,当我想为多个接口中的多个方法前后添加逻辑的时候使用静态代理会变得十分麻烦。
动态代理可以满足我的要求。
使用JDK的动态代理十分简单。
需要用到的类有:
java.lang.reflect.InvocationHandler
java.lang.reflect.Proxy
java.lang.reflect.Method
public class Client {public static void main(String[] args) {Tank t = new Tank();LogHander h = new LogHander(t); //传入:需要代理的类,实现的接口数组,自定义的需要添加的逻辑。 Moveable m = (Moveable) java.lang.reflect.Proxy.newProxyInstance(t.getClass().getClassLoader(), new Class[]{Moveable.class}, h);m.move();m.stop();}}