using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
namespace Observer
{
class Program
{
static void Main(string[] args)
{
// Configure Observer pattern
Subject s = new Subject();
s.Attach(new Observer(s, "X"));
s.Attach(new Observer(s, "Y"));
s.Attach(new Observer(s, "Z"));
// Change subject and notify observers
s.SubjectState = "ABC";
s.Notify();
// Wait for user
Console.Read();
}
}
// "Subject"
class Subject
{
public string SubjectState;
private ArrayList observers = new ArrayList();
public void Attach(Observer observer)
{
observers.Add(observer);
}
public void Detach(Observer observer)
{
observers.Remove(observer);
}
public void Notify()
{
foreach (Observer o in observers)
{
o.Update();
}
}
}
// "Observer"
class Observer
{
private string name;
private string observerState;
private Subject subject;
// Constructor
public Observer(Subject subject, string name)
{
this.subject = subject;
this.name = name;
}
public void Update()
{
observerState = subject.SubjectState;
Console.WriteLine("Observer {0}'s new state is {1}", name, observerState);
}
}
}
No comments:
Post a Comment