设计模式学习专栏十一--------代理模式
名称 : 代理模式(Proxy)
价值观念 : 控制对象的访问
场景
之前以状态模式开发的糖果机设计得很好 , 现在老板希望能远程获取旗下所有糖果机得库存状况
RMI示意图
- 客户到RMI 的注册表中查找
- RMI注册表返回Stub对象
- 客户调用Stub的方法,就像Stub就是真正的服务对象一样
- 客户辅助对象(Stub)打包调用信息(变量方法名称等) , 然后通过网络把它运给服务辅助对象
- 服务辅助对象(Skelton)把来自客户辅助对象的信息解包 , 找出被调用的方法 ,然后调用真正的服务对象上的方法
- 服务对象上的方法被调用,把结果返回给服务辅助对象
- 服务辅助对象把调用的返回信息打包,然后通过网络运给客户辅助对象
- 客户辅助对象把返回值解包,返回给客户对象,对于客户来说,这是完全透明的
代理模式总览
定义:为另一个对象提供一个替身以访问这个对象
-
模式的理解
- 类图
-
角色
- 代理
- 真实对象
- 客户
-
细节
-
代理模式为另一个对象提供代表, 以便控制客户对对象的访问,管理访问的方式有很多种
- 远程代理管理客户和远程对象之间的交互
- 虚拟代理控制访问实例化开销大的对象
- 保护代理基于调用者控制对对象方法的访问
-
代理模式还有许多其他变种
- 缓存代理 , 同步代理 , 防火墙代理 , 写入时复制代理等等
-
代理模式和装饰者模式在类图结构上是一样的,但目的不同
- 代理模式是控制访问 , 装饰者模式是为对象上加入行为
-
- 类图
虚拟代理示意图
动态代理类图
参考
书籍: HeadFirst设计模式
代码参考地址: 我就是那个地址
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。