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();

}

}

 

 

 

 

posted @ 2013-07-10 17:33  cindy_Lu  阅读(314)  评论(0编辑  收藏  举报