前言:
观察者模式适用于一对一,或者一对多的情况,改变目标的状态可以同时让一个或者多个观察者看到目标的改变状态,然后根据自身情况作出相应的反应
class TempEventArgs:EventArgs
{
public double Temp { get; set; }
public TempEventArgs (double temp)
{
this.Temp = temp;
}
}
class EventTest//目标
{
public event EventHandler<TempEventArgs> TempChangeEvent=delegate { };
public void ChangeTemp(double temp)
{
TempChangeEvent?.Invoke(this,new TempEventArgs (temp));
}
}
class Cooler//观察者1
{
public void TempChange( object sender, TempEventArgs e)
{
double temp = e.Temp;
if(temp >50)
{
Console.WriteLine("打开冷却器");
}
else
{
Console.WriteLine("关闭冷却器");
}
}
}
class Heater//观察者2
{
public void TempChange(object sender, TempEventArgs e)
{
double temp = e.Temp;
if (temp > 50)
{
Console.WriteLine("关闭加热器");
}
else
{
Console.WriteLine("打开加热器");
}
}
}
调用:
Heater heater = new Heater();
Cooler cooler = new Cooler();
EventTest eventTest = new EventTest();
eventTest.TempChangeEvent += heater.TempChange;//为目标增加观察者1
eventTest.TempChangeEvent += cooler.TempChange;//为目标增加观察者2
eventTest.ChangeTemp(60);//改变目标状态
输出:
关闭加热器
打开冷却器