设计模式之六:代理模式
来源:互联网 发布:现在什么软件翻墙好 编辑:程序博客网 时间:2024/06/08 05:42
设计模式之六:代理模式
http://www.taidous.com/thread-49559-1-1.html
http://www.taidous.com/thread-49559-1-1.html
(出处: 【泰斗社区】-专注互联网游戏和应用的开发者平台)
代理模式(Proxy Pattern)又称委托模式:
定义:Provide a surrogate or placeholder for another object to control access to it.(为其他对象提供一种代理以控制对这个对象的访问)。
优点:
1、职责清晰:真实的角色就是实现实际的业务逻辑,不用关心其他非本职责的事务,通过后期的代理完成一件事务,附带的结果就是编程简洁清晰;
2、高扩展性:具体主题角色是随时都会发生变化的,只要它实现了接口,甭管它如何变化,我们的代理类完全就可以在不做任何修改的情况下使用;
3、智能化
通用代码结构如下:
/// <summary> /// 抽象主题类 /// </summary> public interface Subject { public void request(); } /// <summary> /// 真实主题类 /// </summary> public class RealSubject : Subject { public void request() { //业务逻辑处理 } } /// <summary> /// 代理类 /// </summary> public class Proxy : Subject { //要代理那个实现类 private Subject subject = null; //默认被代理者 public Proxy() { this.subject = new Proxy(); } //通过构造函数传递代理者 public Proxy(Object objects) { } //实现接口中定义的方法 public void request() { this.before(); this.subject.request(); this.after(); } //预处理 private void before() { } //善后处理 private void after() { } }
在实际开发过程中,代理类的实现比上述代码要复杂很多,代理模式根据其目的和实现方式不同可分为很多种类,其中常用的几种代理模式简要说明如下:
(1) 远程代理(Remote Proxy):为一个位于不同的地址空间的对象提供一个本地的代理对象,这个不同的地址空间可以是在同一台主机中,也可是在另一台主机中,远程代理又称为大使(Ambassador)。
(2) 虚拟代理(Virtual Proxy):如果需要创建一个资源消耗较大的对象,先创建一个消耗相对较小的对象来表示,真实对象只在需要时才会被真正创建。
(3) 保护代理(Protect Proxy):控制对一个对象的访问,可以给不同的用户提供不同级别的使用权限。
(4) 缓冲代理(Cache Proxy):为某一个目标操作的结果提供临时的存储空间,以便多个客户端可以共享这些结果。
(5) 智能引用代理(Smart Reference Proxy):当一个对象被引用时,提供一些额外的操作,例如将对象被调用的次数记录下来等。
0 0
- 设计模式之(六)代理模式Proxy
- 设计模式之六:代理模式
- 设计模式系列之六:代理模式
- 设计模式之六:代理模式
- JAVA设计模式之六代理模式
- 设计模式(六)---代理模式
- 【设计模式】【六】代理模式
- 设计模式(六)之 Proxy(代理)
- 六 设计模式之代理模式(或称委托模式)
- 代理模式——结构型设计模式之六
- 浅析JAVA设计模式之代理模式(六)
- 设计模式(六)代理模式
- 设计模式(六)代理模式
- 设计模式系列(六)代理模式
- 设计模式之代理模式
- 设计模式之代理模式
- 设计模式之代理模式
- 设计模式之代理模式
- MFC List Control列表项内容在Edit中拖拽显示的实现
- Jinjia Template
- Leetcode 283. Move Zeroes
- DAY2——腾讯训练营
- xftp
- 设计模式之六:代理模式
- linux网络编程(13)——服务器模型选型
- [BZOJ3786]星系探索(dfs序+splay)
- 51node 1005 大数加法
- DUBBO研究与学习一:了解
- TOMCAT启动提示NB: JAVA_HOME should point to a JDK not a JRE解决方法
- java数据结构(二)——Set(HashSet,TreeSet),泛型,Map(HashMap,TreeMap,ConcurrentHashMap)
- 数据库常用sql整理
- 网络图片缓存显示框架之universal-image-loader-1.9.1-with-sources