1、 代理模式的作用是为其他对象提供一种代理以控制对这个对象的访问。
在某些情况下一个客户对象不想或不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介作用
2、 应用场景:AOP实现,拦截器、中介、延迟加载
3、 代理模式分类:静态代理、动态代理
在静态代理中,被代理的类是固定的,一个代理类对应一个被代理类。
动态代理就是被代理的类是代码运行时指定的。JDK 为我们提供了一种动态代理的实现,通过实现 InvocationHandler 接口来实现动态代理。
JDK 动态代理也有不足之处,它要求被代理类一定要实现某个接口。Cglib 动态代理,它是基于类做的代理,而不是基于接口。
4、 静态代理角色构成:
1)接口 抽象角色,声明真实对象和代理对象的共同接口
2)实现类 实现接口 真实角色,代理角色所代表的真实对象,是我们最终要引用的对象
3)代理类 实现接口,定义实现类的引用 代理角色,代理对象角色内部含有对真实对象的引用,从而可以操作真实对象,同时代理对象提供与真实对象相同的
接口以便在任何时刻都能代理真实对象。代理对象可以在执行真实对象操作时,附加其他的操作,相当于对真实对象进行封装
5、 动态代理
JDK的InvocationHandler 基于接口的代理,要求被代理类一定要实现某个接口
Cglib 动态代理,是基于类做的代理
6、 优点:扩展性强,对象更智能。
缺点:代理类由
设计模式 第五节 代理模式(Proxy)
最新推荐文章于 2024-08-13 16:16:10 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)