学无止境,精益求精
十年河东,十年河西,莫欺少年穷
学历代表你的过去,能力代表你的现在,学习代表你的将来
所谓代理模式就是你去委托一个人帮你干一件事!例如:你委托我帮你谈恋爱,你委托我帮你陪你媳妇儿逛街,你委托我帮你陪你女朋友回家过年!等等吧!这些事情有需求,请找我,电话:XXX,微信:XXX,QQ:XXX...
首先看看代理模式的 UML 类图:
上图中:RealSubject 代表的是你,Proxy 代表的是我,Subject 是你委托我做的一些事情。就拿你委托我陪你媳妇儿逛街来说,你告诉我要帮你媳妇儿买裙子,买鞋子,买零食等等,这些事情可以看成上图的抽象类 Sbuject 中的抽象方法。而我作为你的代理,我可以把你给我交代给我的事情不完全做,也就是说我可以不给你媳妇儿买零食。当然,我也可以偷偷背着你给你媳妇买玫瑰花。总之,作为代理的我可以全做,也可以部分做,亦可以偷偷趁机多做一点,给你媳妇儿献殷勤,说不定将来的某一天你媳妇儿就归我了!哈哈哈 ~_~
呵呵,调皮了点,言归正传!
那么咱们来看看C#实现代码模式的基础代码:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { /// <summary> /// 抽象接口类 /// </summary> abstract class Subject { public abstract void Request(); } /// <summary> /// 真是实体类 /// </summary> class RealSubject: Subject { public override void Request() { Console.WriteLine("真实的请求"); } } /// <summary> /// 代理类 /// </summary> class Proxy: Subject { RealSubject realSubject; public override void Request() { if (realSubject==null) { realSubject= new RealSubject(); } realSubject.Request(); } } /// <summary> /// 客户端代码 /// </summary> class Program { public static void Main(string[] args) { Proxy proxy= new Proxy(); proxy.Request(); Console.Read(); } } }