C# 观察者模式
今天无意中看到这个模式,觉得挺有意思,所以把它记录下来。
在观察者模式中,当被观察者发生变化时,所有的观察者都会得到通知,并且观察者会自动执行一些方法。
观察者模式中,通常会有着四部分
IObserver(观察者,里面会有个观察者执行的方法){void action();}
ISubject(被观察者,有将观察者添加到容器中的方法){void Notify(); void Register(); void UnRegister();}
Observer:IObserver(通常有很多个){}
Subject:Isubject(通常只有一个这个类){}
=================================================================
下面是实例代码:参考自:http://blog.csdn.net/lijunchen1007/article/details/4404806
public interface ISubject { void Notify(); void Register(IObserver o); void UnRegister(IObserver o); } public interface IObserver { void Action(); } public class Cat : ISubject { List<IObserver> list = new List<IObserver>(); public void Notify() { foreach (IObserver item in list) { item.Action(); } } public void Register(IObserver o) { list.Add(o); } public void UnRegister(IObserver o) { list.Remove(o); } public void Cry() { Console.WriteLine("猫叫了..."); Notify(); } } public class Mouse :IObserver { public void Action() { Console.WriteLine("老鼠逃跑了..."); } } public class Master : IObserver { public void Action() { Console.WriteLine("主人醒了..."); } } public class duck : IObserver { public void Action() { Console.WriteLine("鸭子醒了..."); } } public class a { static void Main(string[] args) { Cat cat = new Cat(); Mouse mouse = new Mouse(); Master master = new Master(); duck duck = new duck(); cat.Register(mouse); cat.Register(master); cat.Register(duck); cat.Cry(); } }