public static void Main_observer_V32(string[] args) { ICricketFactory iFactory = new CricketFactory(); // Create objects for testing ICricketObserver iAverageScoreDisplay = iFactory.CreateAverageScoreDisplay(); iAverageScoreDisplay.Notify += AverageScoreDisplay_Notify; ICricketObserver iCurrentScoreDisplay = iFactory.CreateCurrentScoreDisplay(); iCurrentScoreDisplay.Notify += CurrentScoreDisplay_Notify; // Create Cricket Subject and pass initial data ICricketSubject cricketSubject = iFactory.CreateCicketSubject( (o) => { o.Runs = 100; o.Wickets = 3; o.Overs = 22.3f; }); ICricketSubject iCricketSubject = cricketSubject; iCricketSubject.Subscribed += CricketSubject_Subscribed; //Register display elements iCricketSubject.Subscribe(iCurrentScoreDisplay); iCricketSubject.Subscribe(iAverageScoreDisplay); //In real app you would have some logic to //call this function when data changes iCricketSubject.Update(); //Remove an observer iCricketSubject.UnSubscribed += CricketSubject_UnSubscribed; iCricketSubject.UnSubscribe(iAverageScoreDisplay); cricketSubject.Next( (o) => { o.Runs = 135; o.Wickets = 4; o.Overs = 26.2f; }); iCricketSubject = cricketSubject; // Now only currentScoreDisplay gets the notification iCricketSubject.Update(); Console.ReadKey(); }
public void UnRegister(ICricketObserver observer) { Observers.Remove(observer); }
public void Register(ICricketObserver observer) { Observers.Add(observer); }
public void Subscribe(ICricketObserver observer) { Observers.Add(observer); OnSubscribe(); }
public void UnSubscribe(ICricketObserver observer) { Observers.Remove(observer); OnUnSubscribe(); }