以前来不写东西的 但觉得这次自己写的真的挺不错的还是没忍住就申请了个博客。

观测者模式。网上很多基本上写的要不是乱七八糟,自己整理了一下自己的理解现在发上来让大家看看,多多指教。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace ConsoleApplication2
{class Program{static void Main(string[] args){//首先创建 卧底Undercover m = new Undercover();// 卧底 添加服务的对象  PS : 告诉卧底为谁服务    首先是为大贪官m.add(new Dog());// 接着给卧底 添加服务的对象  PS : 告诉监视者“他”还会为谁服务  现在是警察方面m.add(new Police());// 创建被监视的 小贪官  将卧底的 让卧底他Corrupt mi = new Corrupt(m);// 小贪官 触发的一定条件 卧底 将告诉他的服务对象 情况  PS :  小贪官 要逃跑 然后卧底 告诉服务对象者个情况  目前只有 大贪官 和 警察
            mi.show();Console.ReadKey();}}/// <summary>/// 定义一个委托类/// </summary>public delegate void CatCallEventHandler();/// <summary>/// 触发什么动作后 监视者像服务对象报告/// </summary>public interface bases{/// <summary>/// 执行这个方法/// </summary>void show();}/// <summary>/// 特意被安排来监视 小贪官的 监视者  PS: 卧底 (还是 无间道)/// </summary>public class Undercover{/// <summary>/// 将委托注册成一个事件/// </summary>public event CatCallEventHandler catevent;/// <summary>/// 添加事件方法/// </summary>/// <param name="b"></param>public void add(bases b){if (b != null){this.catevent += b.show;}}/// <summary>/// 执行事件组/// </summary>public void OK(){Console.WriteLine("我是卧底,得向上报告了。");if (this.catevent != null){this.catevent();}}}/// <summary>/// 小贪官/// </summary>public class Corrupt{/// <summary>/// 监视者/// </summary>public Undercover Jsz { get; set; }public Corrupt(Undercover o){// 确保确实有监视者if (o != null){this.Jsz = o;}}/// <summary>///  小贪官逃跑动作/// </summary>public void show(){Console.WriteLine("我是天朝小贪官,我被查到了,得跑路去美国了。幸好老婆孩子早就是美国国籍了");// 监视者告诉委托“他”监视的用户if (Jsz != null){Jsz.OK(); //卧底报告
            }else{Console.WriteLine("跑路成功!");}}}/// <summary>/// 大贪官/// </summary>public class Dog : bases{public void show(){Console.WriteLine("我的天朝大贪官。这货要逃路了,去国外也有可能被抓回来。只有死人才会守口如瓶的!");}}/// <summary>/// 警察局/// </summary>public class Police : bases{public void show(){Console.WriteLine("我的天朝警察。这货要逃路了!坑定是去美国,这几年跑的人太多了,不敢抓大的要是在抓不到小的,估计我这靠关系上位的位置就不保了");}}
}

PS: 程序如社会啊。   果然是程序还得靠人来写啊,因为它完全是模拟的 “人” 自己啊               话说,我们不会也是别人编程出来的吧? 尼玛 不能想 越想越觉得可能!

现在回顾一下  这样设计 弊端很大啊   主要问题是  谁让可以创建多个监听者了  但是  监听的事件确是 一个事件。如果需要监听其他事件 拿就得定义N多个 委托。

后写个 版本二    通过接口集合 按照传统的来吧、

转载于:https://www.cnblogs.com/atliwen/p/liwen.html

10分钟让你完全理解观察者模式相关推荐

  1. 10分钟带你深入理解Transformer原理及实现

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自|深度学习这件小事 基于 Transformer<A ...

  2. 10分钟内基于gpu的目标检测

    10分钟内基于gpu的目标检测 Object Detection on GPUs in 10 Minutes 目标检测仍然是自动驾驶和智能视频分析等应用的主要驱动力.目标检测应用程序需要使用大量数据集 ...

  3. github创建静态页面_如何在10分钟内使用GitHub Pages创建免费的静态站点

    github创建静态页面 Static sites have become all the rage, and with good reason – they are blazingly fast a ...

  4. 自行车车把会吧车刮坏吗_花10分钟即可开始使用车把

    自行车车把会吧车刮坏吗 by Wing Puah 永帕(Wing Puah) 花10分钟即可开始使用车把 (Take 10 minutes to get started with Handlebars ...

  5. 量子计算机 漫画,漫画 | 10分钟看懂量子比特、量子计算和量子算法

    原标题:漫画 | 10分钟看懂量子比特.量子计算和量子算法 请做好准备,即将进入烧脑模式! 宏观世界的生活经验很多都是表象.比如,你可能认为世界的运行是确定的.可预测的:一个物体不可能同时处于两个相互 ...

  6. 三步10分钟搞定数据库版本的降迁 (将后台数据库SQL2008R2降为SQL2005版本)

    三步10分钟搞定数据库版本的降迁 (将SQL2008R2降为SQL2005版本) 转载原文,并注明出处!虽无多少技术含量,毕竟是作者心血原创,希望理解. 转自 http://blog.csdn.net ...

  7. python 两个列表相互映射_Python基础 — 10分钟学习函数式Python

    点击上方蓝字"Python圈子",进行关注~ (图片源自网络) 在这篇10分钟的文章中,您将学习Python中的函数式范型.您还将学习列表推导式. 目录 1.  函数式范式 2.  ...

  8. python写好的代码怎么给别人使用-10分钟学会用python写游戏!Python其实很简单!...

    原标题:10分钟学会用python写游戏!Python其实很简单! Python现在非常火,语法简单而且功能强大,很多同学都想学Python!所以在这里给各位看官们准备了高价值Python学习视频教程 ...

  9. 教你如何在面试中用「10分钟快速分析」一款产品

    本文为PMCAFF专栏作者PMnote出品 通常对产品新人或刚转做产品经理的人来说,大多在面对「产品本身的观察与分析」时都是在面试的时候,为了考察面试者的「产品感」面试官大多都会问「你有用过我们的产品 ...

最新文章

  1. IT人面试必看!25个雷区和11个必问句!
  2. 【412天】跃迁之路——程序员高效学习方法论探索系列(实验阶段169-2018.03.24)...
  3. intellij_使用IntelliJ ..已经2周了,到目前为止还算不错
  4. 【深度学习】模型训练教程之Focal Loss调参和Dice实现
  5. 观看马云网商大会视频的一些感想.
  6. SpringBoot+MyBatisPlus实现前端传递时间查询条件ajax请求后台并回显数据流程整理
  7. 蛤玮打扫教室(区间覆盖)
  8. 解决在vue init webpack my-project卡住的问题(已解决)
  9. 它估值 25 亿!被马云领投,是华为“老战友”,网友:也许股价能超茅台!
  10. C++ Gotchas: Avoiding Common Problems in Coding and Design
  11. 使用springboot自带 MD5加密
  12. DOtween 教程
  13. 刷python题库的网站_大神教你刷bios工具
  14. 初次使用MarkDown编辑器
  15. ps新手零基础知识入门教程学习_图文
  16. 纯代码方式实现cesium倾斜摄影单体化和楼栋分层
  17. 【JavaSE】列车售票系统数据库(表的源代码)
  18. 考研高数——积分中值定理证明
  19. 如何定制App Store榜单优化策略?
  20. 今天安装了VS2008中文版SP1。

热门文章

  1. 大众点评字体_点评里的神笔马良!她的美食笔记会让你惊掉下巴!
  2. 基于蔡氏混沌电路进行非线性共振探究
  3. ESP32 One-Wire驱动功能
  4. 第十六届智能车竞赛赛道电磁线圈铺设方法
  5. 金黄色的LED灯带感光特性测量
  6. java之泛型_java之泛型
  7. hive删除hbase数据_Hive进阶:Hive通过外部表操作Hbase数据
  8. php jquery ajax输出数组吗,jquery – 从PHP返回数组时的Ajax Parse错误
  9. abb焊接机器人编程全解_焊接机器人的焊枪编程也是很重要的
  10. python坐标点怎么输入_python导入坐标点的具体操作