代理模式

代理模式:为其他对象提供一种代理以控制对这个对象的访问。

好处:可以控制被代理类的访问和行为。在不修改被代理类的情况下对被代理类的访问做出修改。

代理分为:

静态代理:编译期已经确定了被代理的对象和代理类。

1)代理类和被代理类实现同样的接口(保证行为一致)

2)代理类持有一个被代理类对象(保证代理类能够调用到被代理类)

动态代理:在运行期间才确定被代理的对象,并动态生成一个代理类。

Java中动态代理有两种:

jdk动态代理:通过反射来创建代理类。被代理类和代理类实现同样的接口。(必须有共同的接口)

1)实现共同的接口,需要定义一个共同的接口。

2)需要定义代理类的回调类,该类需要实现InvokecationHandler接口,在invoke方法中编写代理类的逻辑

3)需要通过反射的API,生成代理类。

Cglib动态代理:通过编辑字节码文件来生成一个代理类。生成的代理类继承自被代理类。

1)导入cglib依赖

2)实现MethodInterceptor接口

代理类和被代理类的行为是一致的。

如何保证行为一致? 1)实现同样的接口 2)继承关系

原文地址:https://www.cnblogs.com/xie-qi/p/13216693.html