一、观察者模式,由一只猫发起一个事件。然后影响多个不同的对象(观察者)发生不同的动作反应。
包括:老鼠会跑(Mouse--Run)、狗会叫(Dog--Wang)、小偷会躲起来(Stealer--Hide)、婴儿会哭(Baby--Cry)、妈妈会说话(Mother--Whisper)等等。。。
二、新建控制台程序,建立这只神奇的猫和多个观察者对象类;
神奇猫(Cat)类
public class Cat
{
public event Action MiaoHandler;//定义一个委托事件
public void MiaoEvent()
{
Console.WriteLine("{0} MiaoEvent.....", this.GetType().Name);
if (this.MiaoHandler != null)
{
foreach (Action observer in this.MiaoHandler.GetInvocationList())
{
observer.Invoke();
}
}
}
}
老鼠(Mouse)类
public class Mouse
{
public void Run()
{
Console.WriteLine("{0} Run", this.GetType().Name);
}
}
狗(Dog)类
public class Dog
{
public void Wang()
{
Console.WriteLine("{0} Wang", this.GetType().Name);
}
}
小偷(Stealer)类
public class Stealer
{
public void Hide()
{
Console.WriteLine("{0} Hide", this.GetType().Name);
}
}
婴儿(Baby)类
public class Baby
{
public void Cry()
{
Console.WriteLine("{0} Cry", this.GetType().Name);
}
}
妈妈(Mother)类
public class Mother
{
public void Whisper()
{
Console.WriteLine("{0} Whisper", this.GetType().Name);
}
}
三、上面各个类建立完成之后,程序主入口调用。
class Program
{
static void Main(string[] args)
{
try
{
Console.WriteLine("*******************观察者模式事件委托实现*******************");
Cat cat = new Cat();
cat.MiaoHandler += new Mouse().Run;
cat.MiaoHandler += new Baby().Cry;
cat.MiaoHandler += new Dog().Wang;
cat.MiaoHandler += new Mother().Whisper;
cat.MiaoHandler += new Stealer().Hide;
cat.MiaoEvent();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
Console.Read();
}
}
理解的不是很到位,大家有什么意见可以评论。。。。谢谢大家