🍝 代理模式
2022年6月20日
- 设计模式
🍝 代理模式
1. 概述
1) 是什么
- 可对原有实现方法添加额外操作,进行 方法包装 | 方法增强
- 为其他对象提供一种代理以控制对这个对象的访问
- 通常只代理一个接口
- 某些情况下,客户不想或者不能够直接引用一个对象,代理对象可以在客户和目标对象直接起到中介的作用。
- 客户端分辨不出代理主题对象与真实主题对象。
- 代理模式可以并不知道真正的被代理对象,而仅仅持有一个被代理对象的接口,这时候代理对象不能够创建被代理对象,被代理对象必须有系统的其他角色代为创建并传入。
2) 优点
3) 缺点
2. 代码示例
1) 场景 & 目标
- 有吃萝卜这个功能
- 希望第三方可以给这个功能增加前置操作 & 后置操作
- 而自己只需要跟第三方联系
2) 代码示例
3. 应用
1) AOP
- 进行增强,例如添加 日志服务、方法拦截等
- 一般情况下,在织入切面时,AOP容器会为目标对象创建动态的创建一个代理对象
2) 远程代理。
- 操作远程对象
- 比如:Dubbo、gRPC,提供远程服务,客户端调用时需要走参数组装、序列化、网络传输等操作,
- 这些通用逻辑都可以封装到代理中,客户端调用代理对象访问远程服务,就像调用本地对象一样方便。