这个SubjectImplProxy类的作用是包装SubjectImpl类的实例,它的内部定义一个变量target来保存一个SubjectImpl的实例。SubjectImplProxy也实现了接口规定的两个方法,并且在它的实现版本中,都调用了SubjectImpl的实现,但是又添加了自己的处理逻辑。相信这段代码不难理解,它通过对SubjectImpl进行包装,达到了给输出内容添加前缀的功能。动态代理相对于静态代理在使用上的优点主要是能够对一个对象的所有方法进行统一包装,而且后期被代理的类添加方法的时候动态代理类不需要改动。缺点是要求被代理的类必须实现了接口,因为动态代理类在实现的时候继承了Proxy类,java不支持多继承,因此动态代理类只能根据接口来定义方法。

深入学习Java 动态代理

深入学习Java 动态代理

深入学习Java 动态代理

深入学习Java 动态代理

深入学习Java 动态代理

深入学习Java 动态代理

深入学习Java 动态代理

深入学习Java 动态代理

深入学习Java 动态代理

深入学习Java 动态代理

深入学习Java 动态代理

深入学习Java 动态代理