(C#)代理模式
2015-08-05 10:39
417 查看
1.代理模式
为其他对象提供代理以控制对这个对象的访问。
远程代理:为一个对象在不同的地址空间提供举报代表。这样可以隐藏一个对象在不同地址空间的事实。
虚拟代理:是依据需要创建开销很大的对象。通过它来存放实例化需要长时间的真是对象。
安全代理:用来控制真实对象的访问时的权限。
智能代理:指当调用真实对象时,代理处理另外一些事。
2.实例
为其他对象提供代理以控制对这个对象的访问。
远程代理:为一个对象在不同的地址空间提供举报代表。这样可以隐藏一个对象在不同地址空间的事实。
虚拟代理:是依据需要创建开销很大的对象。通过它来存放实例化需要长时间的真是对象。
安全代理:用来控制真实对象的访问时的权限。
智能代理:指当调用真实对象时,代理处理另外一些事。
2.实例
namespace 代理模式 { class Program { static void Main(string[] args) { GirlMM mm = new GirlMM(); mm.Name = "夏花"; Proxy proxy = new Proxy(mm); proxy.GiveDolls(); proxy.GiveFlowers(); proxy.GiveChocolate(); Console.ReadLine(); } } /// <summary> /// 被代理对象执行的操作接口 /// </summary> interface IGiveGift { void GiveDolls(); void GiveFlowers(); void GiveChocolate(); } /// <summary> /// 被代理者希望代理执行操作的类 /// </summary> class GirlMM { private string name; public string Name { get { return name; } set {name = value;} } } /// <summary> /// 被代理者 /// </summary> class Pursuit: IGiveGift { GirlMM mm; public Pursuit(GirlMM mm) { this.mm = mm; } public void GiveDolls() { Console.WriteLine(mm.Name+"送你洋娃娃"); } public void GiveFlowers() { Console.WriteLine(mm.Name + "送你鲜花"); } public void GiveChocolate() { Console.WriteLine(mm.Name + "送你巧克力"); } } class Proxy:IGiveGift { Pursuit gg; public Proxy(GirlMM mm) { gg = new Pursuit(mm); } public void GiveDolls() { gg.GiveDolls(); } public void GiveFlowers() { gg.GiveFlowers(); } public void GiveChocolate() { gg.GiveChocolate(); } } }
相关文章推荐
- 【c#】让.Net 应用程序突破2G的内存访问限制
- (C#)工厂方法模式
- C#进制转换
- C#中将字符串转换成日期的方式
- C#多线程问题整合
- C#(WPF)中使用WinAPI函数进行截屏
- C#(WPF)中使用WinAPI函数进行截屏
- C# 重写WndProc 拦截 发送 系统消息
- 【转】C# 的Brush 及相关颜色的操作
- C#读取及写入配置文件教程
- C#多线程介绍(下)
- 编写高质量代码改善C#程序的157个建议
- Leap Motion的环境配置(使用c#)
- C#中[],List,Array,ArrayList的区别于应用
- C# 遍历文件夹及其子文件夹来查找某个文件
- C#编程:读二进制文件的优化
- c#多线程介绍(上)
- c# -- 对象销毁和垃圾回收
- c# 可反复打开word2003,word2007文档方法,可直接使用
- VS2015 C#6.0 中的没有实现/支持的特性