Пример #1
0
 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";
     }
 }
Пример #2
0
        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();
        }
Пример #3
0
        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);
            });
        }
Пример #4
0
        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();
        }
Пример #5
0
        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();
        }