什么是代理?
代理思想就是被代理者没有能力,或者不愿意去完成某件事情,需要找个人(代理)代替自己去完成这件事。
动态代理主要是对被代理对象的行为进行代理。
一个对象,用来对被代理对象的行为进行管理的对象。
动态代理的开发步骤
必须定义接口,里面定义一些行为,用来约束被代理对象和代理对象都要完成的事情。
定义一个实现类实现接口,这个实现类的对象代表被代理的对象。
定义一个测试类,在里面创建被代理对象,然后为其创建一个代理对象返回。(重点)
代理对象中,需要模拟收首付款,真正触发被代理对象的行为,然后接收尾款操作。
通过返回的代理对象进行方法的调用,观察动态代理的执行流程。
创建代理对象
Java中代理的代表类是:java.lang.reflect.Proxy,它提供了一个静态方法,用于为被代理对象,产生一个代理对象返回。
必须存在接口
被代理对象需要实现接口。
使用Proxy类提供的方法,为被代理对象创建一个代理对象。
通过代理对象调用方法,执行流程是什么样的?
- 先走向代理
- 代理中可以真正触发被代理对象的方法执行。
- 回到代理中,由代理负责返回结果给调用者。
动态代理的优点
- 可以在不改变方法源码的情况下,实现对方法功能的增强,提高了代码的复用。
- 简化了编程工作、提高了开发效率,同时提高了软件系统的可扩展性。
- 可以为被代理对象的所有方法做代理。
- 非常的灵活,支持任意接口类型的实现类对象做代理,也可以直接为接本身做代理。