private void DetachObserver(Button button, BaseObserverView observer) { if (button.Text.Equals("Detach")) { subject.Detach(observer); button.Text = "Attach"; } else { subject.Attach(observer); button.Text = "Detach"; } }
static void Main(string[] args) { var subject = new Subject(); var observer1 = new Observer1(); var observer2 = new Observer2(); subject.Attach(observer1); subject.Attach(observer2); subject.NotifyChange("Test change state 1"); subject.Detach(observer2); subject.NotifyChange("Test change state 2"); Console.ReadLine(); }
static void Main() { var rnd = new Random(); var subject = new Subject(); var observerA = new ConcreteObserverA(); var observerB = new ConcreteObserverB(); Parallel.For(0, 5, (i, loopState) => { int delay; lock (rnd) delay = rnd.Next(1, 1001); Thread.Sleep(delay); Console.WriteLine("Thread : " + i); subject.Attach(observerA); subject.DoSomething(); subject.Detach(observerB); }); }
static void Main(string[] args) { var rnd = new Random(); var subject = new Subject(); var observerA = new ConcreteObserverA(); int delay; lock (rnd); delay = rnd.Next(1, 1001); Thread.Sleep(delay); subject.Attach(observerA); var observerB = new ConcreteObserverB(); subject.Attach(observerB); subject.SomeBusinessLogic(); subject.SomeBusinessLogic(); subject.Detach(observerB); subject.SomeBusinessLogic(); }
static void Main(string[] args) { // Клиентский код. var subject = new Subject(); //магазин var observerFirst = new FirstClient(); //Наблюдатель первый subject.Attach(observerFirst); var observerSecond = new SecondClient();//Наблюдатель второй subject.Attach(observerSecond); var observerThird = new ThirdClient(); subject.Attach(observerThird); subject.NewspapperLogic(); subject.NewspapperLogic(); subject.JournalLogic(); subject.Detach(observerSecond); subject.NewspapperLogic(); }