设计模式之动态代理
动态代理
静态代理:
 需求:在项目现有所有类的方法前后打印日志。
 那么我们如何在不修改原来代码的情况下实现这个功能呢?
 我们可以先用“静态代理”的方式实现。
-  为现有的每一个类都编写一个对应的代理类,并且让它实现和目标类相同的接口(假设都有) 
-  在创建代理对象时,通过构造器塞入一个目标对象,然后在代理对象的方法内部调用目标对象同名方法,并在调用前后打印日志。也就是说,代理对象 =增强代码 + 目标对象(原对象)。有了代理对象后,就不用原对象了。 
 缺点:程序员要手动为每一个目标类编写对应的代理类。如果当前系统已经有成百上千个类,工作量太大了。所以,现在我们的努力方向是:如何少写或者不写代理类,却能完成代理功能?
动态代理:
 JDK提供了java.lang.reflect.InvocationHandler接口和 java.lang.reflect.Proxy类。
 优点:
 代码演示动态代理:
 
 
 
 
 
 










