设计模式笔记(五) —— 代理模式
来源:互联网 发布:可牛闪图软件下载 编辑:程序博客网 时间:2024/06/08 08:33
代理模式(Proxy):为其它对角提供一种代理以控制对这个对象的访问。
使用场合有以下几种:
第一:远程代理,也就是为一个对象在不同的地址空间提供局部代表。这样可以隐藏一个存在不同地址空间的事实。(WebService)
第二:虚拟代理,是根据需要创建开销很大的对象。通过它来存放实例化需要很长时间的对象。
第三:安全代理,用来控制真实对象的访问权限。
第四:智能指引,是指调用真实的对象时,代理处理另外一些事。
- using System;
- namespace StuDesignMode.Proxy
- {
- interface GiveGift
- {
- /// <summary>
- /// 送礼物
- /// </summary>
- void GiveDolls();
- /// <summary>
- /// 送鲜花
- /// </summary>
- void GiveFlowers();
- /// <summary>
- /// 送巧克力
- /// </summary>
- void GiveChocolate();
- }
- /// <summary>
- /// 被追求者,美女
- /// </summary>
- class Girl
- {
- public string Name { get; set; }
- public Girl(string name)
- {
- this.Name = name;
- }
- }
- /// <summary>
- /// 追求者
- /// </summary>
- class Pursuit : GiveGift
- {
- private Girl _mm;
- public Pursuit(Girl girl)
- {
- this._mm = girl;
- }
- public void GiveDolls()
- {
- Console.WriteLine("{0} 送你洋娃娃",this._mm.Name);
- }
- public void GiveFlowers()
- {
- Console.WriteLine("{0} 送你鲜花", this._mm.Name);
- }
- public void GiveChocolate()
- {
- Console.WriteLine("{0} 送你巧克力", this._mm.Name);
- }
- }
- /// <summary>
- /// 代理类,红娘
- /// </summary>
- class Proxyer : GiveGift
- {
- private Pursuit _gg;
- public Proxyer(Girl mm)
- {
- this._gg = new Pursuit(mm);
- }
- public void GiveDolls()
- {
- this._gg.GiveDolls();
- }
- public void GiveFlowers()
- {
- this._gg.GiveFlowers();
- }
- public void GiveChocolate()
- {
- this._gg.GiveChocolate();
- }
- }
- public class ClientTest
- {
- static void Main(string[] args)
- {
- Girl mm = new Girl("刘亦非");
- Proxyer huongniang = new Proxyer(mm);
- Console.WriteLine();
- huongniang.GiveDolls();
- huongniang.GiveFlowers();
- huongniang.GiveChocolate();
- Console.WriteLine();
- }
- }
- }
- 设计模式笔记(五) —— 代理模式
- 大话设计模式学习(五)——代理模式
- 大话设计模式笔记(五)——代理模式和工厂方法模式
- 设计模式学习笔记—代理模式
- 大话设计模式(五)代理模式
- 设计模式学习笔记—代理模式(Proxy)
- 设计模式五:代理模式
- 设计模式学习笔记(五)之代理模式(Proxy)
- 设计模式—代理模式(四)
- 设计模式—代理模式
- 设计模式—代理模式
- 设计模式—代理模式
- 设计模式—代理模式
- 设计模式—代理模式
- 设计模式—代理模式
- 设计模式—代理模式
- 设计模式—代理模式
- 设计模式—代理模式
- 在.NET中调用Oracle9i存储过程经验总结
- DataSet,DataTable 不使用EXCEL组件直接保存为EXCEL
- 【已解决】Adobe CS3遇到问题需要关闭……
- 类型转换
- urllib2 对 redirect / cookie 的处理方法
- 设计模式笔记(五) —— 代理模式
- 关于VS2003中的Warning:strcpy was declared deprecated.
- 十句话
- ccna言论
- LINUX下完全卸载ORACLE 10G的方法
- 如何理解c和c++ 的复杂类型声明
- javascript substr() 和 substring()区别
- [转]由浅到深详细讲解JSP自定义标签
- 设计模式笔记(六) —— 工厂方法模式