
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.");
}
}