代理模式:
本来应该自己做的事情,却请了别人来做,被请的人就是代理对象。
动态代理:
在程序运行过程中产生的这个对象;而程序运行过程中产生对象其实就是我们刚才反射讲解的内容,所以,动态代理其实就是通过反射来生成一个代理对象.
在Java中java.lang.reflect包下提供了一个Proxy类和一个InvocationHandler接口,通过使用这个类和接口就可以生成动态代理对象。JDK提供的代理只能针对接口做代理。
1.一般的代理模式,需要为原类增加"代理类",这样的话,代理类会越来越多;
2.Java中的动态代理机制:
1).自定义类,实现一个InvocationHandler接口;重写:invoke()方法;
Object invoke(Object proxy,Method method,Object[] args)
2).获取代理对象:Proxy类的静态方法:
public static Object newProxyInstance(ClassLoader loader,Class<?>[] interfaces,InvocationHandler h)
注意:Java中的动态代理是基于:接口的(要代理的类,必须是某个接口类型的子类)
|
|