动态代理的一些思考

来源:互联网 发布:百度云管家mac版 编辑:程序博客网 时间:2024/06/05 02:35

思考:为什么需要动态代理?,对一个类进行增强,完全可以去继承,然后重写需要增强的方法,还可以实现一些接口,产生更强大的能力,这样岂不是更好.

答曰:代理就是对类中的方法进行增强,前置增强,后置增强,环绕增强,等.如果要对目标类中的所有方法进行增强,就必须重写目标类中的所有方法.在这一点上,动态代理非常的强大,只需 要实现一个方法就能对所有的方法进行增强.

jdk的动态代理:创建一个代理类,用反射的方式通过目标类实例获得目标类的所有方法(通过构造传入目标类实例).在执行invoke方法前后执行增强,也可以做判断,对指定的方法进行增  强.