动态代理
底层实现为动态代理
什么是动态代理
使用jdk的反射机制,拥有创建对象的能力 创建的是代理类的对象 而不用你创建类的文件 不用写java文件
动态:在程序执行时 调用jdk提供的方式才能创建代理类的对象
动态代理能做什么
可以在不改变原来目标方法功能的前提下 可以在代理中增强自己的代码功能
换句话说:
你所在的项目中,有一个功能是其他人写好的 你可以使用
但是你发现这个功能不是很完善缺点功能 不满足自己的需求
我需要在他的代码执行后 自己再写点代码 增加自己的功能
而且用的代理实现的 自加自己的代码 原来的代码没变化
作用
1.功能增强:在你原有的功能上 增加额外的功能 新增加的功能 就是功能增强
2.控制访问:代理类不让你访问目标 例如:商家不让用户直接访问厂家
代理实现方式
1.静态代理:自己手工实现的 自己创建的Java类 同时你代理的目标类是确定的 表示为代理类
优点:实现简单 容易理解
缺点:当你的目标类增多时候 代理类可能需要成倍增加 代理数量也会增加 当你的接口中功能增加 或者 修改了 会影响你的实现类 厂家类 需要修改很多的代码
2.动态代理:当静态代理很多时候 可以使用动态代理
1.目标类即使很多 代理类的数量也可以很少
2.当你修改了接口中的方式时 不会影响你的代理类