目的:使用代理对象来控制对被代理对象的访问。
作用:可以在不修改原对象的情况下扩展其功能。
1、静态代理
注意点:1)代理类和被代理类都要实现同一个接口(原因:保持一致性,方便使用时能无缝替换)2)代理对象需要持有被代理的目标对象。
2、动态代理
静态代理的缺点
当真实类的方法越来越多的时候,构建代理类的代码量会变得非常大,所以就引进动态代理。aop使用的就是动态代理。
2.1、JDK动态代理
2.2、cglib动态代理
3、静态代理和动态代理总结
1静态代理:代理类和真实类实现同一个接口,需要重写相同的方法;当接口中方法增多时,代理类代码量也会增多。
2动态代理:代理类和真实类关系关系不大,是运行时动态生成的;当接口中方法增多时,代理类代码量不会增多。