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.");
}
}
原文地址:https://www.cnblogs.com/BinaryBoy/p/2312945.html