23种设计模式:观察者模式,第一次对观察者模式理解的这么通透。

View Code
class Program
{
static void Main(string[] args)
{
Subject sub1 = new Subject();
Observer_1 ob1 = new Observer_1("NO.1");
Observer_1 ob2 = new Observer_1("NO.2");
sub1.AddObserver(ob1);
sub1.AddObserver(ob2);
sub1.Notify();
Console.Read();
}
}

class Subject
{
private List<IObserverable> observerContainer = new List<IObserverable>();

public void AddObserver(IObserverable observer)
{
this.observerContainer.Add(observer);
}

public void RemoveObserver(IObserverable observer)
{
this.observerContainer.Remove(observer);
}

public void Notify()
{
foreach (IObserverable o in this.observerContainer)
{
Console.WriteLine(o.ObserverName);
o.Update();
}
}

}

interface IObserverable
{
string ObserverName { get; }
void Update();
}

class Observer_1 : IObserverable
{
private string _ObserverName;

public Observer_1(string observerName)
{
this._ObserverName = observerName;
}

public string ObserverName
{
get { return _ObserverName; }
}

public void Update()
{
Console.WriteLine(this.ObserverName + ": Is updated.");
}
}

class Observer_2 : IObserverable
{
private string _ObserverName;

public Observer_2(string observerName)
{
this._ObserverName = observerName;
}

public string ObserverName
{
get { return _ObserverName; }
}

public void Update()
{
Console.WriteLine(this.ObserverName + ": Is updated.");
}
}

 

posted @ 2012-01-05 12:38  E=mc&#178;  阅读(241)  评论(0编辑  收藏  举报