为别人做嫁衣 代理模式
7.1 为别人做嫁衣!
7.2 没有代理的代码
![](/assets/blank.gif)
![](/assets/blank.gif)
namespace 代理模式 {class Program{static void Main(string[] args){SchoolGirl jiaojiao = new SchoolGirl();jiaojiao.Name = "李娇娇";Pursuit zhuojiayi = new Pursuit(jiaojiao);zhuojiayi.GiveDolls();zhuojiayi.GiveFlowers();zhuojiayi.GiveChocolate();Console.Read();}}//追求者class Pursuit{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 SchoolGirl{private string name;public string Name{get { return name; }set { name = value; }}}}
View Code
7.3 只有代理的代码
![](/assets/blank.gif)
![](/assets/blank.gif)
namespace 代理模式 {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();}}//代理人class Proxy{SchoolGirl mm;public Proxy(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 SchoolGirl{private string name;public string Name{get { return name; }set { name = value; }}}}
View Code
7.4 符合实际的代码
![](/assets/blank.gif)
![](/assets/blank.gif)
namespace 代理模式 {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();}}//送礼物interface GiveGift{void GiveDolls();void GiveFlowers();void GiveChocolate();}class Proxy : GiveGift{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 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 SchoolGirl{private string name;public string Name{get { return name; }set { name = value; }}}}
View Code
7.5 代理模式
为其它对象提供一种代理以控制对这个对象的访问,
![](/assets/blank.gif)
![](/assets/blank.gif)
namespace 代理模式 {class Program{static void Main(string[] args){Proxy proxy = new Proxy();proxy.Request();Console.Read();}}//定义RealSubject和Proxy的共用接口,这样就在任何使用RealSubject的地方都可以使用Proxy,abstract class Subject{public abstract void Request();}//定义Proxy所代表的真实实体,class RealSubject : Subject{public override void Request(){Console.WriteLine("真实的请求");}}//保存一个引用使得代理可以访问实体,并提供一个与Subject的接口相同的接口,这样代理就可以用来替代实体,class Proxy : Subject{RealSubject realSubject;public override void Request(){if (realSubject == null)realSubject = new RealSubject();realSubject.Request();}}}
View Code
7.6 代理模式的应用
代理模式应用场合:
1.远程代理,也就是为一个对象在不同的地址空间提供局部代表,这样可以隐藏一个对象存在于不同地址空间的事实,
2.虚拟代理,是根据需要创建开销很大的对象,通过它来存放实例化需要很长时间的真实对象,
3.安全代理,用来控制真实对象访问时的权限,
4.智能指引,是指当调用真实的对象时,代理处理另外一些事,
7.7 秀才让小六代其求婚
转载于:https://www.cnblogs.com/huangxuQaQ/p/11265697.html
为别人做嫁衣 代理模式相关推荐
- 《大话设计模式》之--第7章 为别人做嫁衣----代理模式
第7章 为别人做嫁衣----代理模式 7.1为别人做嫁衣 "小菜,今天见这个叫娇娇的美女见得如何呀?"大鸟一回家来就问小菜. "唉,别提了,人家是有男朋友的." ...
- 第7章 为别人做嫁衣----代理模式 大话设计模式
第7章 为别人做嫁衣----代理模式 7.1为别人做嫁衣 "小菜,今天见这个叫娇娇的美女见得如何呀?"大鸟一回家来就问小菜. "唉,别提了,人家是有男朋友的." ...
- java设计模式之为别人做嫁衣----代理模式
2019独角兽企业重金招聘Python工程师标准>>> 7.1为别人做嫁衣 "小菜,今天见这个叫娇娇的美女见得如何呀?"大鸟一回家来就问小菜. "唉,别 ...
- 设计模式(三) | 为别人做嫁衣---代理模式
代理模式 代理模式:为其他对象提供一种代理,以控制对这个对象的访问. 模式动机: 在某些情况下,一个客户不想或者不能直接引用一个对 象,此时可以通过一个称之为"代理"的第三者来实现 ...
- 为别人做嫁衣——代理模式
代理模式(Proxy):为其他对象提供一种代理以控制对这个对象的访问. 代理模式(Proxy)结构图 Subject类,定义了RealSuject和Proxy的共用的接口,这样就在任何使用RealSu ...
- 【设计模式】为别人做嫁衣 --- 代理模式
一,概述 定义:代理模式(Proxy)为另一个对象提供一个替身或占位符以控制对这个对象的访问,简而言之就是用一个对象来代表另一个对象. 作用:为其他对象提供一种代理以控制对这个对象的访问.在某些情况下 ...
- 为别人做嫁衣---代理模式
引例 : 追求者(C),被追求者(B) ,代理者(A) 故事概要: A和B是好朋友, A喜欢B ,但A以C的名义去送给B礼物 1.没有代理 追求者类class Pursuit{SchoolGirl m ...
- 第七章 为别人做嫁衣—代理模式
仅仅是个人学习笔记,不具备参考价值 在说一下代理模式的应用. (1)远程代理(Remote Proxy) -可以隐藏一个对象存在于不同地址空间的事实.也使得客户端可以访问在远程机器上的对象,远程机器可 ...
- 为别人做嫁衣 --- 代理模式
一,概述 定义:代理模式(Proxy)为另一个对象提供一个替身或占位符以控制对这个对象的访问,简而言之就是用一个对象来代表另一个对象. 作用:为其他对象提供一种代理以控制对这个对象的访问.在某些情况下 ...
最新文章
- linux-awk的简单应用
- VNC怎么和宿主机共享粘贴板(整理)
- 微软发布 Windows 10 预览版 Build 21343:此电脑和回收站等启用全新图标
- 变分法理解1——泛函简介
- ArcMap增加图标
- 再见 Python!Yann LeCun 警告:深度学习需要新编程语言
- 用Bi-GRU+Attention和字向量做端到端的中文关系抽取
- [渝粤教育] 中国地质大学 测量学 复习题
- 前端计算机英语单词,解决文件命名,变量命名头皮发麻,单词超多1700个前端专属单词,css常用命名单词【起名字太烦了全背下来内卷吧小伙伴大前端时代来临了】
- 怎么用psftp下载linux上的文件夹,使用PSFTP上传和下载Linux服务器文件.doc
- 机器学习系列全集,301页PDF精心整理!
- 怎么把PDF文件转换成图片?这两种方法可以收藏下来
- 前端端使用非对称加密解密
- Android 私有权限白名单
- python3 chm文档下载_python3.7.0官方参考文档 最新api文档 chm_Python教程_源雷技术空间...
- 三个理由告诉你 为什么社保不能断缴
- 微信内转发APP及h5类域名怎么做到防封防拦截,微信域名防红技术原理
- mysql连接flush-hosts问题处理
- loopj----Android Asynchronous Http Client(AHC)
- 海盗王GM工具箱 - 物品编辑器