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();
        }
Example #2
0
 public void UnRegister(ICricketObserver observer)
 {
     Observers.Remove(observer);
 }
Example #3
0
 public void Register(ICricketObserver observer)
 {
     Observers.Add(observer);
 }
Example #4
0
 public void Subscribe(ICricketObserver observer)
 {
     Observers.Add(observer);
     OnSubscribe();
 }
Example #5
0
 public void UnSubscribe(ICricketObserver observer)
 {
     Observers.Remove(observer);
     OnUnSubscribe();
 }