static void Main(string[] args) { var observer1 = new Observer("George"); var observer2 = new Observer("Eric"); var observable = new Observable(); observable.Subscribe(observer1); observable.Subscribe(observer2); observable.NotifyObservers(new Message("Hello World")); Console.WriteLine(""); observable.Unsubscribe(observer1); observable.NotifyObservers(new Message("Goodbye World")); }
// see. http://nanoappli.com/blog/archives/6885 static void Main(string[] args) { // 作業者(被監視者) var observable = new Observable(); // 監視者 var observer = new Observer(); Console.WriteLine("----- パターン1 -----"); // 作業者に監視者を割り当てる observable.Subscribe(observer); // エラー observable.Execute(-1); // エラーが発生しているので通知は来ない observable.Execute(1); observable.Execute(2); observable.Execute(3); Console.WriteLine("----- パターン2 -----"); // 作業者に監視者を割り当てる observable.Subscribe(observer); observable.Execute(1); observable.Execute(2); observable.Execute(3); observable.Execute(10);// 完了 // 完了しているので通知は来ない observable.Execute(1); observable.Execute(2); observable.Execute(3); Console.WriteLine("----- パターン3 -----"); // 作業者に監視者を割り当てる IDisposable disporser = observable.Subscribe(observer); observable.Execute(1); observable.Execute(2); observable.Execute(3); // 監視者の主導で Unsubscribe する disporser.Dispose(); // Unsubscribe しているので通知は来ない observable.Execute(1); observable.Execute(2); observable.Execute(3); Console.ReadKey(); }