static void Main(string[] args) { Console.WriteLine("Observer Pattern funny example"); Console.WriteLine("------------------------------"); var employees = new List<IConsoleEmployee>(); var managerSubject = new ManagerSubject(); employees.Add(new APlayerEmployee(managerSubject)); employees.Add(new BPlayerEmployee(managerSubject)); employees.Add(new CPlayerEmployee(managerSubject)); var isRunning = true; var lastState = false; while (isRunning) { Console.WriteLine(); Console.WriteLine("Toggling Manager state..."); managerSubject.SetState(new ManagerState(!lastState)); lastState = !lastState; Console.WriteLine("Manager is in office: " + managerSubject.GetState().IsInRoom); Console.WriteLine("Checking employee status..."); foreach (var employee in employees) { employee.WriteStateToConsole(); } Console.WriteLine(); Console.WriteLine("X key to exit, any key to repeat."); var key = Console.ReadKey(); if (key.Key == ConsoleKey.X) { isRunning = false; } } }
public APlayerEmployee(ManagerSubject managersubject) { managersubject.Attach(this); }
public BPlayerEmployee(ManagerSubject managersubject) { this.managerSubject = managersubject; managersubject.Attach(this); }