#, , , , , :)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace SimpleObserver
{
class Program
{
static void Main(string[] args)
{
Newspaper newspaper = new Newspaper();
Grandma grandma = new Grandma(newspaper);
newspaper.ChangeNews("no news today...");
newspaper.ChangeNews("still no news...");
}
}
public interface Subject
{
void RegisterObserver(Observer o);
void RemoveObserver(Observer o);
void NotifyObservers();
}
public class Newspaper : Subject
{
private List<Observer> observers = new List<Observer>();
private string news = "initial news, nothing new!";
public void RegisterObserver(Observer o)
{
this.observers.Add(o);
}
public void RemoveObserver(Observer o)
{
this.observers.Remove(o);
}
public void NotifyObservers()
{
foreach (Observer o in this.observers)
o.Update(news);
}
public void ChangeNews(string newNews)
{
this.news = newNews;
this.NotifyObservers();
}
}
public interface Observer
{
void Update(string news);
}
public class Grandma : Observer
{
private Subject subject;
public Grandma(Subject subject)
{
this.subject = subject;
this.subject.RegisterObserver(this);
}
public void Update(string news)
{
Console.WriteLine("Granny reads the news, very slowly...");
Console.WriteLine("The news today is... " + news);
}
}
}