7.1 为别人做嫁衣!

7.2 没有代理的代码

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 只有代理的代码

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 符合实际的代码

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 代理模式

为其它对象提供一种代理以控制对这个对象的访问,

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

为别人做嫁衣 代理模式相关推荐

  1. 《大话设计模式》之--第7章 为别人做嫁衣----代理模式

    第7章 为别人做嫁衣----代理模式 7.1为别人做嫁衣 "小菜,今天见这个叫娇娇的美女见得如何呀?"大鸟一回家来就问小菜. "唉,别提了,人家是有男朋友的." ...

  2. 第7章 为别人做嫁衣----代理模式 大话设计模式

    第7章 为别人做嫁衣----代理模式 7.1为别人做嫁衣 "小菜,今天见这个叫娇娇的美女见得如何呀?"大鸟一回家来就问小菜. "唉,别提了,人家是有男朋友的." ...

  3. java设计模式之为别人做嫁衣----代理模式

    2019独角兽企业重金招聘Python工程师标准>>> 7.1为别人做嫁衣 "小菜,今天见这个叫娇娇的美女见得如何呀?"大鸟一回家来就问小菜. "唉,别 ...

  4. 设计模式(三) | 为别人做嫁衣---代理模式

    代理模式 代理模式:为其他对象提供一种代理,以控制对这个对象的访问. 模式动机: 在某些情况下,一个客户不想或者不能直接引用一个对 象,此时可以通过一个称之为"代理"的第三者来实现 ...

  5. 为别人做嫁衣——代理模式

    代理模式(Proxy):为其他对象提供一种代理以控制对这个对象的访问. 代理模式(Proxy)结构图 Subject类,定义了RealSuject和Proxy的共用的接口,这样就在任何使用RealSu ...

  6. 【设计模式】为别人做嫁衣 --- 代理模式

    一,概述 定义:代理模式(Proxy)为另一个对象提供一个替身或占位符以控制对这个对象的访问,简而言之就是用一个对象来代表另一个对象. 作用:为其他对象提供一种代理以控制对这个对象的访问.在某些情况下 ...

  7. 为别人做嫁衣---代理模式

    引例 : 追求者(C),被追求者(B) ,代理者(A) 故事概要: A和B是好朋友, A喜欢B ,但A以C的名义去送给B礼物 1.没有代理 追求者类class Pursuit{SchoolGirl m ...

  8. 第七章 为别人做嫁衣—代理模式

    仅仅是个人学习笔记,不具备参考价值 在说一下代理模式的应用. (1)远程代理(Remote Proxy) -可以隐藏一个对象存在于不同地址空间的事实.也使得客户端可以访问在远程机器上的对象,远程机器可 ...

  9. 为别人做嫁衣 --- 代理模式

    一,概述 定义:代理模式(Proxy)为另一个对象提供一个替身或占位符以控制对这个对象的访问,简而言之就是用一个对象来代表另一个对象. 作用:为其他对象提供一种代理以控制对这个对象的访问.在某些情况下 ...

最新文章

  1. linux-awk的简单应用
  2. VNC怎么和宿主机共享粘贴板(整理)
  3. 微软发布 Windows 10 预览版 Build 21343:此电脑和回收站等启用全新图标
  4. 变分法理解1——泛函简介
  5. ArcMap增加图标
  6. 再见 Python!Yann LeCun 警告:深度学习需要新编程语言
  7. 用Bi-GRU+Attention和字向量做端到端的中文关系抽取
  8. [渝粤教育] 中国地质大学 测量学 复习题
  9. 前端计算机英语单词,解决文件命名,变量命名头皮发麻,单词超多1700个前端专属单词,css常用命名单词【起名字太烦了全背下来内卷吧小伙伴大前端时代来临了】
  10. 怎么用psftp下载linux上的文件夹,使用PSFTP上传和下载Linux服务器文件.doc
  11. 机器学习系列全集,301页PDF精心整理!
  12. 怎么把PDF文件转换成图片?这两种方法可以收藏下来
  13. 前端端使用非对称加密解密
  14. Android 私有权限白名单
  15. python3 chm文档下载_python3.7.0官方参考文档 最新api文档 chm_Python教程_源雷技术空间...
  16. 三个理由告诉你 为什么社保不能断缴
  17. 微信内转发APP及h5类域名怎么做到防封防拦截,微信域名防红技术原理
  18. mysql连接flush-hosts问题处理
  19. loopj----Android Asynchronous Http Client(AHC)
  20. 海盗王GM工具箱 - 物品编辑器

热门文章

  1. Lua学习笔记1--基本变量类型
  2. ArcGIS基础:融合相邻面要素(【制图综合-消除】)
  3. tp5 where多条件
  4. Celery从入门到出家
  5. 求助Ubuntu编译时报错问题
  6. matlab中精确求零点,matlab求零点
  7. Oracle 1053事件 主要看是成本如何计算的?
  8. 2011级-csdn-java-张侃— struts2-上传功能
  9. c#管理系统菜单生成树无限级
  10. 我的 ESP8266 版智能插座鉴赏