博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
10分钟让你完全理解观察者模式 版本二
阅读量:7295 次
发布时间:2019-06-30

本文共 1731 字,大约阅读时间需要 5 分钟。

class Program    {        static void Main(string[] args)        {            // 事件源              Student student = new Student("美女");             // 执行的事件            student.Sleep();            // 执行的时间            student.Bathe();            // 注册监听器            student.SetStudentListener(new MyStudent());         }    }    ///     ///  事件源    ///     public class Student    {        public string Name { get; set; }        // 事件接口         private IStudentListener _interface;        public Student(string name)        {            this.Name = name;        }        public void Sleep()        {            Console.WriteLine(Name + " 睡觉了 ");        }         public void Bathe()        {            if (_interface != null)                 _interface.Bathe(new EventObject(this));             Console.WriteLine(Name + " 在洗澡 ");        }         public void SetStudentListener(IStudentListener iListener)        {            this._interface = iListener;        }     }    ///     /// 接口    ///     public interface IStudentListener    {  // 监听的事件        void Bathe(EventObject e);    }    ///     ///  事件源   只是负责将处罚事件的对象经行传递过来    ///     public class EventObject    {         private object _eOobj;         public EventObject(object o)        {            _eOobj = o;        }         public object GetObject()        {            return _eOobj;        }     }    ///     /// 监听者    ///     public class MyStudent : IStudentListener    {         public void Bathe(EventObject e)        {            Student student = (Student)e.GetObject();            Console.WriteLine(student.Name+" 洗澡中 ");        }    }

 

 附加图解 :

自己胡乱花的  方便初学者 看而已    这种模式 一个事件 只能有一个监听者啊   一个动作 只能被一个人得知 。

我加上 委托事件 再来搞搞

 

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

你可能感兴趣的文章
Python中变量的绑定,或者说引用
查看>>
第一天。
查看>>
css 颜色渐变
查看>>
aaronyang的百度地图API之LBS云与.NET开发 Javascript API 2.0【把数据存到LBS云2/2】
查看>>
SparkMLlib聚类学习之KMeans聚类
查看>>
如果让莎士比亚、海明威编写JavaScript代码
查看>>
每日一“酷”之bisect
查看>>
Inherits、CodeFile、CodeBehind的区别
查看>>
用Seam实现:图片上传 + 保存到数据库 + 从数据库读出图片并显示到页面中
查看>>
802.3标准
查看>>
java爬虫笔记
查看>>
JSP导入EXCEL样式
查看>>
2.Hadoop集群安装进阶
查看>>
java研发工作组环境架设
查看>>
代码片收集
查看>>
网站备案与备案注销
查看>>
书单丨打开投资理财之路,从这25本书开始
查看>>
Less 创建css3动画@keyframes函数
查看>>
.NET Framework 4 与 .NET Framework 4 Client Profile的区别与联系
查看>>
Que pensez-vous de air jordan pas cher
查看>>