static bool TestObserverPattern() { Console.WriteLine("TESTING THE OBSERVER DESIGN PATTERN: "); //The subject that will be observed Subject subject = new ConcreteSubject("ABC"); //Attaching 3 observers subject.AttachRange(new List <Observer> { new ConcreteObserver("o1"), new ConcreteObserver("o2"), new ConcreteObserver("o3") }); //This will trigger the notification to the observers subject.SetState("XYZ"); //Output: //Observer o1 notified. New subject state: XYZ //Observer o2 notified. New subject state: XYZ //Observer o3 notified. New subject state: XYZ Console.ReadKey(); return(true); }