动态代理
代理模式的原理
使用一个代理对象将对象包装起来,然后用该代理类取代原始对象。任何对原始对象的调用都要通过代理,代理对象决定是否以及何时将方法调用转到原始对象上
静态代理
举例:
静态大力的缺点
1.代理类和目标对象的类都是在编译期间确定下来的,不利于程序扩展
2.每一个代理类只能为一个接口服务,这样一来程序开发中必然产生过多的代理
动态代理的特点
动态代理是指客户通过代理类来调用其他对象的方法,并且是在程序运行时根据需要动态创建目标类的代理对象
动态代理的实现
需要解决的两个主要问题:
如何根据加载到内存中更多被代理类,动态创建一个代理类及其对象
通过Proxy.newProxyInstance()实现
当通过代理类的对象调用方法a时,如何动态的去调用被代理类中的同名方法a
当通过InvocationHandler接口的实现及其方法invoke()
示例