代理模式 c#
2016-01-07 23:50
369 查看
当我们由于某些原因,不能或者不需要对角色进行直接访问的时候,那么我们就可以通过代理对象去实现我们的具体行为,这个代理对象类似于媒婆的作用。
using System; using System.Collections; using System.Collections.Generic; using System.Linq; namespace ConsoleApplication1 { class Program { /// <summary> /// 抽象角色 /// </summary> public abstract class Role { public abstract void BuyProduct(); } /// <summary> /// 真实角色 /// </summary> public class RealBuyRole : Role { public override void BuyProduct() { Console.WriteLine("buy something"); } } /// <summary> /// 代理角色 /// </summary> public class Proxy:Role { private RealBuyRole realRole; public override void BuyProduct() { if (realRole == null) { realRole = new RealBuyRole(); } this.PreBuyProduct(); // 调用真实角色方法 realRole.BuyProduct(); this.PostBuyProduct(); } /// <summary> /// 代理角色的前置行为 /// </summary> public void PreBuyProduct() { Console.WriteLine("买东西前做的事情"); } /// <summary> /// 代理角色的后置行为 /// </summary> public void PostBuyProduct() { Console.WriteLine("买东西后做的事情"); } } static void Main(string[] args) { Role proxy = new Proxy(); proxy.BuyProduct(); } } }
相关文章推荐
- 使用C#删除一个字符串数组中的空字符串
- C#高级编程笔记(一)
- 装饰者模式 c#
- [读书笔记]C#学习笔记一: .Net Framwork
- C# Plugin Framework Demos
- C# using 三种使用方式
- 关于C#自定义控件【摘录】
- C# 坦克大战学习总结
- C# 坦克大战学习总结
- 基于MASM6.15的汇编集成开发环境
- 06.C#线程Thread
- c# 基本控件,窗口程序
- 05.C#委托(delegate)的使用
- 04.C#文件和流的操作
- C# Seal用法
- C#中怎么使用系统默认浏览器打开指定的URL(代码实现)
- C# Socket编程 同步以及异步通信
- C# 反射学习
- C#实现在winfrom程序中下载文件
- C#中采用自定义方式读取自定义配置文件