无我

让内心永远燃烧着伟大的光明的精神之火!
灵活的思考,严谨的实现
豪迈的气魄、顽强的意志和周全的思考

浅读《大话设计模式》————7、为别人做嫁衣——代理模式

浅读《大话设计模式》————7、为别人做嫁衣——代理模式

通读全文,我发现代理模式中的代理还是与现实中的代理还是不同的。代理模式中,真正动作人要代理做的事情,自己也要定义做的方法,就是自己要处理具体的事情。而代理,无非就是利用成员对象进行接口转移罢了。但是现实世界,代理是要全权处理所代理的事情的。游戏开发公司完全只是开发,与玩家的交互,服务器的维护则完全是运营代理商的事。所以,在学习代理模式时,我觉得应该首先明白在思想上对这两者进行弄明白。

代理模式:为其他对象提供一种代理以控制对这个对象的访问[DP]。

如果从以上这个定义,我们还可以挖掘出另一种层次的意思:代理模式为真实对象的访问提供了安全性屏障。

代理模式的设计:

1、Subject类,定义了RealSubject和Proxy的共用接口,这样就在任何使用RealSubject的地方都可以使用Proxy.

abstract  class  Subject

{

Public abstract void Request();

}

2、RealSubject类,定义Proxy所代表的真实实体

Classs  RealSubject: Subject

{

Public override void Request()

{

Console.WriteLine("真实的请求");

}

}

3、Proxy类,保存一个引用使得代理可以访问实体,并提供一个与Subject的接口相同的接口,这样代理就可以用来替代实体。

class Proxy : Subject

{

RealSubject  realSubject;

Public  override void Request()

{

If(realSubject == null)

{

realSubject = new RealSubject();

}

realSubject .Request() ;

}

}

4、客户端代码

Static void Main(string [] args)

{

Proxy  proxy = new Proxy();

proxy.Request();

Console.Read();

}

关于代理模式的几个应用,我没看很明白,可能自己用得不多,不过似乎总结下来,代理模式起码的作用有:控制对真实对象访问的安全性;虚拟代理优化对大对象的访问;在真实对象操作之时,代理还可以做另外一些事情,使程序更智能。

posted on 2009-04-16 22:41 Tim 阅读(319) 评论(0)  编辑 收藏 引用 所属分类: 设计模式


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理


<2011年3月>
272812345
6789101112
13141516171819
20212223242526
272829303112
3456789

导航

统计

公告

本博客原创文章,欢迎转载和交流。不过请注明以下信息:
作者:TimWu
邮箱:timfly@yeah.net
来源:www.cppblog.com/Tim
感谢您对我的支持!

留言簿(9)

随笔分类(173)

IT

Life

搜索

积分与排名

最新随笔

最新评论

阅读排行榜