> 文章列表 > GoF代理模式

GoF代理模式

GoF代理模式

在java中代理模式的作用:

  1.一个对象需要受到保护的时候,可以考虑使用代理对象取完成某个行为.

  2.需要给某个对象的功能进行功能增强的时候,可以考虑找一个代理进行增强

  3.A对象无法和B对象无法直接沟通,也可以使用代理模式解决

代理模式有三大角色:

  第一个角色:目标对象(演员)

  第二个角色:代理对象(替身演员)

  第三个角色:目标对象和代理对象的公共接口(演员和替身演员应该具有相同的行为动作)

如果使用代理模式的话,对于客户端程序来说,客户端是无法察觉到的,客户端在使用代理对象的时候就像在使用目标对象

 如果要维护之前的代码,可以采用代理模式,将之前写好的类作为属性写到新生成的类,用接口来接,这样耦合度低

就像运行在目标对象一样

 

 目前使用的是静态代理,每个接口都需要代理类,不好维护,可以使用动态代理

proxy意为代理 

使用JDK动态代理技术:调用Proxy.newProxyInstance(类加载器,代理类要实现的接口,调用处理器)

 第三个参数传一个类,编写的是增强代码,需要实现InvocationHandler

 

当代理对象调用代理方法的时候,注册在InvocationHandler调用处理器当中的invoke()方法被调用

 此时完成的增强,还没有调用目标对象的目标方法

 

调用method.invoke(目标对象,参数),目标参数通过构造方法传入

 如果有返回值的话,记得继续往上返回

 

CGLiB简介: