菜鸟硕枫设计模式系列之13 代理模式二(动态代理)
java中的动态代理都需要实现一个实现了InvocationHandler接口的代理类,在该类中需要实现invoke方法,并且需要注入你想要代理的目标类对象实例。然后就可以对想要代理的方法进行操作了。
动态代理类图:

具体demo示例:
对象接口
动态代理:package invokeProxy;import java.lang.reflect.InvocationHandler;import java.lang.reflect.Proxy;public class DynamicProxyTest {public static void main(String[] args){Man man = new Man("lxy");InvocationHandler dynamicProxy = new DynamicProxy(man);Class<?> clazz = man.getClass(); //三个参数都不能为空 也就是说被代理类必须有实现某一接口,而且有动态代理对象Person person = (Person) Proxy.newProxyInstance(clazz.getClassLoader(),clazz.getInterfaces(),dynamicProxy);person.work();person.play();}}
说明:代理模式是设计模式的重要模式之一,动态代理模式又是java最重要特性反射的示例demo,要重点掌握哈。迭代器模式,观察者模式,三大工厂模式,外观模式是设计模式务必掌握的几个模式。