一、什么是观察者模式
多个对象根据另一个对象的动作作出相应的反应。
二、观察者模式的作用
多个对象根据目标对象的事件作出不同的响应,比如当防空警报响起的时候,军人准备作战,警察疏散人群,平民躲到防空洞,军人,警察,平民都是根据防空警报事件作出了不同的动作,这三个对象就是观察者,警报就是目标事件,大概是这么个意思。。
三、观察者模式的使用场景
当一个事件执行之后还需要执行一些其他事件,并且这个事件的数量位置会有变化时,可以使用观察者模式。
四、如何实现观察者模式
主程序:
namespace Observer
{
class Program
{
static void Main(string[] args)
{
Alert alert = new Alert();
alert.ActionEvent += new Soldier().Fight;
alert.ActionEvent += new Police().Command;
alert.ActionEvent += new Civilian().Run;
alert.AlertEvent();
}
}
}
目标事件Alert.cs:
namespace Observer
{
public class Alert
{
//动作事件
public event Action ActionEvent;
//警报事件
public void AlertEvent()
{
Console.WriteLine("防空警报响起:唔。。。。。。。。。。");
if (this.ActionEvent != null)
{
ActionEvent.Invoke();
}
}
}
}
观察者:
//Soldier.cs
namespace Observer.AlertObserver
{
public class Soldier
{
public void Fight()
{
Console.WriteLine("军人:已作好战斗准备,随时准备战斗");
}
}
}
//Police.cs
namespace Observer.AlertObserver
{
public class Police
{
public void Command()
{
Console.WriteLine("警察:迅速疏散人群");
}
}
}
//Civilian.cs
namespace Observer.AlertObserver
{
public class Civilian
{
public void Run()
{
Console.WriteLine("平民:快速跑向最近的防空设施");
}
}
}
以上为本章所有内容。
完。