Java的三种代理模式
2022-02-22 本文已影响0人
代码的搬运工
代理模式是一种设计模式,提供了对目标对象另外的访问方式,即通过代理对象访问目标对象。这样做的好处是可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能。
1、静态代理
静态代理在使用时,需要定义接口或者父类,被代理对象与代理对象一起实现相同的接口或者是继承相同父类。示例代码如下:
1)创建接口:UserDao.java
2)创建目标对象:UserDaoImpl.java
3)创建代理对象:UserDaoProxy.java
4)创建测试类:Main.java
缺点:代理对象需要与目标对象实现一样的接口,一旦接口增加方法,代理对象与目标对象都要维护。
2、JDK动态代理
JDK动态代理不需要实现接口,利用JDK的API动态的在内存中构建代理对象。示例代码如下:
1)创建接口:UserDao.java
2)创建目标对象:UserDaoImpl.java
3)创建代理工厂类:ProxyFactory.java
4)创建测试类
3、CGLIB代理
CGLIB代理是一个第三方实现的动态代理库,不需要被代理类必须实现接口,它采用的是继承被代理类,使用其子类的方式,弥补了被代理类没有接口的不足。示例代码如下:
1)创建接口:UserDao.java
2)创建目标对象:UserDaoImpl.java
3)实现MethodInterceptor接口:MyMethodInterceptor.java
4)创建测试类
转自:https://www.cnblogs.com/teach/p/10763845.html