代理模式
来源:互联网 发布:中兴汽车怎么样 知乎 编辑:程序博客网 时间:2024/05/16 08:08
代理模式
里氏替换原则:子类型必须能够替换掉他们的父类型。
核心
为其他对象提供一种代理,以控制对这个对象的访问。
好处
在直接访问对象时带来的问题,比如说:要访问的对象在远程的机器上。在面向对象系统中,有些对象由于某些原因(比如对象创建开销很大,或者某些操作需要安全控制,或者需要进程外的访问),直接访问会给使用者或者系统结构带来很多麻烦,我们可以在访问此对象时加上一个对此对象的访问层。
例子
情景是:A追求李娇娇,但不认识,通过认识她的B来送礼物。B是代理,代替A完成送礼物的事情。(实现送礼物接口)
//被追求者类class SchoolGirl{ public string Name { get; set; }}//代理接口(送礼物)interface GiveGift{ void GiveDolls(); void GiveFlowers(); void GiveChocolate();} //追求者类class Pursuit : GiveGift{ SchoolGirl mm; public Pursuit(SchoolGirl 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 : GiveGift{ private Pursuit gg; public Proxy(SchoolGirl mm) { gg = new Pursuit(mm); } public void GiveDolls() { gg.GiveDolls(); } public void GiveFlowers() { gg.GiveFlowers(); } public void GiveChocolate() { gg.GiveChocolate(); }}//客户端class Program{ static void Main(string[] args) { SchoolGirl jiaojiao = new SchoolGirl(); jiaojiao.Name = "李娇娇"; Proxy daili = new Proxy(jiaojiao); daili.GiveDolls(); daili.GiveFlowers(); daili.GiveChocolate(); Console.Read(); }}
例子来源:Linux公社《大话设计模式》
实例代码在我的代码托管上
代理模式
0 0
- 代理模式--动态代理
- 代理模式-静态代理
- 代理模式-静态代理
- 代理模式 & 动态代理
- 代理模式--静态代理
- 代理模式--动态代理
- 代理模式(动态代理)
- 代理模式-动态代理
- 代理模式-动态代理
- 代理模式动态代理
- 代理模式-静态代理
- 代理模式-动态代理
- 代理模式 -动态代理
- 代理模式---动态代理
- 代理模式-动态代理
- 代理模式--静态代理
- 代理模式!
- 代理模式
- Touch事件分发机制
- 马里奥设计总监揭秘创作过程
- ubuntu运行android studio出错unable to run mksdcard sdk tool
- ffmpeg 视频
- .net中的System.Threading.Interlocked类可以为多个线程共享的变量提供原子操作
- 代理模式
- 浅谈HTTP中Get与Post的区别
- Android Style.xml 详解
- Spanned.SPAN_EXCLUSIVE_EXCLUSIVE的含义
- 【软件设计模式】代理模式
- Spring3.0
- 我的第一个Struts2框架开发-Hello World
- 关于MFC客户端窗口全屏和撤销全屏问题
- OkHttp使用方法详解