案例要求:用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();
}
}
}
}
运行结果如下: