C# 委托、事件与Observer模型小案例
案例要求:用Observer方式写一个模拟手机耗电的程序,三个类的模块分别是手机(phone),电量显示器(displayer)和报警器(speaker),完成委托与事件声明、observer代理方法、代理时间注册等过程。
实现效果:当手机电量大于20%时,输出当前手机电量为__%; 当手机电量小于等于20%时,输出手机快没电了,就剩__%。
代码如下:
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading;namespace ConsoleApp1
{class Program{public class Phone{private int dianliang;public delegate void Haodian(int param);public event Haodian Speacker;public event Haodian Displayer;public void Dianliang(){for (int i = 100; i >= 0; i--){dianliang = i;Thread.Sleep(200);if (Displayer != null){Displayer(dianliang);}if (dianliang <= 20){if (Speacker != null){Speacker(dianliang);}}}}}public class Speack{public void MakeAlert(int param){Console.WriteLine("手机快没电了,就剩 {0} %:", param);}}public class Display{public static void ShowMsg(int param){if (param > 20)Console.WriteLine("当前手机电量是:{0}%。", param);}static void Main(string[] args){Phone phone = new Phone();Speack speack = new Speack();phone.Speacker += speack.MakeAlert;phone.Displayer += Display.ShowMsg;phone.Dianliang();Console.ReadKey();}}}
}
运行结果如下:
C# 委托、事件与Observer模型小案例相关推荐
- Vue里使用three.js实现3D模型小案例
Vue里使用three.js实现3D模型小案例 1.下载three.js包 npm install three --save 或者 yarn add three --save 2.组件代码 <t ...
- 设计模式---观察者模式(Observer)和委托事件模型(DEM)
1 引言 观察者模式,又名发布订阅模式,是一个一对多的关系,当被观察者发生某种变化,对应其观察者做出相应的改变.比如说,某学校研究生实验室有2个学生,2个学生某个上午在实验室,A在玩游戏,B在看电影, ...
- Observer设计模式中-委托事件-应用在消息在窗体上显示
Observer设计模式:监视者模式.在类中的方法中处理的结果或者消息通过事件委托 的方式发送给主窗体. 因为在其它类中直接访问主窗体类,显示内容是不能直接调用控件赋值的,当然也有别的类似查阅控件名, ...
- 机器学习之sklearn-KNN近邻算法分类小案例(乳腺癌预测最优模型)
(案例):用sklearn包实现knn分类小案例,通过交叉验证网格搜索获取最优参数模型,进行参数评估. 导包: from sklearn.datasets import load_breast_can ...
- Vue制作todoList事件备忘录经典小案例
前言 今天是10月1日国庆节,行走在大街小巷,处处洋溢着热烈喜庆的节日氛围,在这一天祝愿祖国繁荣昌盛,越来越强大.因国庆放假(本来周六这天有课),今天无聊看了看后台私信,看到了很对私我类似的消息: 很 ...
- Javascript小案例(一):仿淘宝搜索框用户输入事件的实现
淘宝是我们经常用的一个网上购物平台,打开淘宝网首页,找到淘宝首页的搜索框,如下如所示: (截图日期:2017年6月18日) 大家可以看到,当页面一打开,搜索框中就可以看到灰色字体"少女高跟鞋 ...
- C#委托事件小实例 闹钟
#region 委托与事件 闹钟小实例 /* * 包含: * Prpgram类 * AlarmClock 实体类 * BellEventArgs 闹铃事件参数类 * * 作者:大元帅 ...
- php7 viewmodel,【初念科技】| php框架实例: Laravel之Model Observer模型
原标题:[初念科技]| php框架实例: Laravel之Model Observer模型 本文主要学习下Laravel的Model Observer模型观察者,小编把自己的一点点经验分享出来希望对别 ...
- 刘铁锰老师C#语言入门详解(委托事件等部分有详细代码和注释)
目录 1.初识类 1.1 类与对象的关系 1.2 类的三大成员 1.3 静态成员与实例成员 1.4 类修饰符 2.构成C#语言的基本元素 2.1 六个基本元素 2.2 算法简介 3. 详解类型.变量与 ...
最新文章
- 计算机硬件常见问题及修复,pc机输入输出设备的常见故障现象及故障修复方法...
- Community Server专题一:概述Community Server
- 2019 年百度之星·程序设计大赛 - 初赛一 C. HDU 	6670 Mindis 离散化+dijkstra
- javascript indexOf函数
- mongoose 批量修改字段_WordPress图片路径批量替换方法
- 信息学奥赛一本通C++语言——1038:苹果和虫子
- django-debug-toolbar 工具
- CMakeFiles/species.inc.dir/build.make:57: recipe for target 'CMakeFiles/species.inc' failed
- 使用cmake和vs2019进行编译libtorch过程
- memcache的安装和使用
- 软件工程导论课堂作业
- 数值分析——Hermite插值
- 计算机专业保研英语自我介绍,计算机保研面试英文自我介绍.doc
- 计算机win10+上锁,win10系统给电脑屏幕上锁的操作方法
- oracle统计每日归档大小,归档大小日志计算
- pycharm验证码
- 如何将ip修改成域名
- 判断一个多边形是否是凸多边形
- python实现多进程工资计算器
- Asp.Net支付宝沙箱支付(也可用手机扫描支付)详细教程