public static void Main() { ObservableClass observable = new ObservableClass(); ObserverClass observer = new ObserverClass(observable); observable.Value = 10; }
public static void Main_old(string[] args) { ObserverClass clsLib = new ObserverClass(); string cmd = null; string directoryPath = null; int frequency = 1000; //ms while (true) { Console.WriteLine(@"Please enter command ('start' or 'stop'): "); cmd = Console.ReadLine().Trim(); Console.WriteLine(@"Please enter directory: "); directoryPath = Console.ReadLine().Trim(); if (cmd == "start") { Console.WriteLine("Starting " + directoryPath + " observation..."); clsLib.Observe(directoryPath, frequency, (result) => Console.WriteLine(result)); } else if (cmd == "stop") { clsLib.StopObservation(directoryPath); Console.WriteLine("... directory " + directoryPath + " observation is stoped"); } else { Console.WriteLine("Unknown command: " + cmd); } } }
/// <summary> /// 옵저버에 등록된 구독자들에게 ObserverClass 를 전달 /// 전달은 받은 구독자들은 ObserverClass 의 ObserverName 과 ObserverAction 에 따라서 적절한 행동을 한다. /// </summary> public void Notify(ObserverClass aObserver) { foreach (IObserver item in this.mListener) { item.OnNext(aObserver); } }
/// <summary> /// 수신된 ObserverClass 와 Action 에 따라서 처리한다. /// </summary> public void OnNext(ObserverClass observer) { switch (observer.Action) { case ObserverAction.Invalidate: this.Invalidate(false); return; case ObserverAction.FileLoad: this.Invalidate(false); return; case ObserverAction.New: this.Invalidate(false); return; } }
/// <summary> /// 수신된 ObserverClass 와 Action 에 따라서 처리한다. /// </summary> public void OnNext(ObserverClass aObserver) { if (aObserver.Name == ObserverName.ToolBar) { switch (aObserver.Action) { case ObserverAction.FileLoad: FileLoad(); return; case ObserverAction.FileSave: FileSave(); return; case ObserverAction.New: New(); return; } } }
/// <summary> /// 수신된 ObserverClass 와 Action 에 따라서 처리한다. /// </summary> public void OnNext(ObserverClass observer) { }