Hence if any state change of _Reporter object will be notify to all its observers.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace DesignPatterns
{
public interface ICricketReporter //as Subject
{
void AddObserver(ICricketReporteSubscribers observer);
void RemoveObserver(ICricketReporteSubscribers observer);
void SendInformationToObservers(string CurrentMatchStatus);
}
public interface ICricketReporteSubscribers//as Observer
{
void updateCurrentMatchStatus(string CurrentMatchStatus);
}
#region Subject
public class CricketReporter : ICricketReporter
{
List _ObserversList = new List();
#region IVIPStatus Members
public void AddObserver(ICricketReporteSubscribers observer)
{
_ObserversList.Add(observer);
}
public void RemoveObserver(ICricketReporteSubscribers observer)
{
_ObserversList.Remove(observer);
}
public void SendInformationToObservers(string CurrentMatchStatus)
{
foreach (ICricketReporteSubscribers _observer in _ObserversList)
{
_observer.updateCurrentMatchStatus(CurrentMatchStatus);
}
}
#endregion
}
#endregion
#region Observers
public class BCCTVChannel : ICricketReporteSubscribers //implement IObserver to behave like observer for Subject
{
public void updateCurrentMatchStatus(string CurrentMatchStatus)
{
Console.WriteLine("Match status @ BCCTVChannel :" + CurrentMatchStatus);
}
}
public class CNNTVChannel : ICricketReporteSubscribers //implement IObserver to behave like observer for Subject
{
public void updateCurrentMatchStatus(string CurrentMatchStatus)
{
Console.WriteLine("Match status @ CNNTVChannel :" + CurrentMatchStatus);
}
}
public class TV9TVChannel : ICricketReporteSubscribers //implement IObserver to behave like observer for Subject
{
public void updateCurrentMatchStatus(string CurrentMatchStatus)
{
Console.WriteLine("Match status @ TV9 TVChannel :" + CurrentMatchStatus);
}
}
#endregion
public class SubnMainClass//main Class
{
public static void Main()
{
ICricketReporter _Reporter = new CricketReporter();
BCCTVChannel _Observer1 = new BCCTVChannel();
CNNTVChannel _Observer2 = new CNNTVChannel();
TV9TVChannel _Observer3 = new TV9TVChannel();
_Reporter.AddObserver(_Observer1);
_Reporter.AddObserver(_Observer2);
_Reporter.AddObserver(_Observer3);
_Reporter.SendInformationToObservers("INDIA won toss and elected for Batting");
Console.WriteLine("\n");
_Reporter.SendInformationToObservers("INDIA Score 355/1 after 50 overs");
Console.WriteLine("\n");
_Reporter.SendInformationToObservers("INDIA WON THE MATCH");
Console.Read();
}
}
}