什么是代理模式?
代理模式是java中常用的设计模式,它的特点是代理类与委托类实现同样的接口。代理类并不真正地实现服务,而是通过调用委托类对象的方法,提供特定的分服务。
什么是动态代理?它的优点是什么?
按照代理的创建时期,代理可分为两种。程序运行前就已经创建好的叫做静态代理,程序运行时利用反射机制动态生成的叫做动态代理。动态代理的优点是只需要一个代理类就能实现全部的代理功能。
如何实现一个动态代理?
实现一个动态代理有两种方法,一种是使用 JDK 实现动态代理,另一种是使用 Cglib 实现动态代理。
前者的代理类需要实现 InvocationHandler 接口(该接口要实现一个 Invoke() 方法),并用在Bind 方法中调用 Proxy 的 NewProxyInstance 方法创建代理实例。在创建代理实例的过程中,需要绑定委托类实现的(提供相关服务的)接口。如果委托类没有实现接口,那么这种方法不能使用。
后者是生成一个代理类的子类,需要实现 MethodInterceptor 接口(该接口要实现一个 intercept() 方法),并在 getNewInstance() 中创建一个实例,然后把其父类设定为委托类,并返回该实例。由于这种方法是基于继承的,因为 final 类不能使用。
参考链接:http://www.cnblogs.com/jqyp/archive/2010/08/20/1805041.html