Esempio n. 1
0
        public static void TestStart()
        {
            var wd = new WeatherData();
            var currentConditionDisplay = new CurrentConditionDisplay(wd);
            var thirdPartyDisplay       = new ThirdPartyDisplay(wd);

            wd.SetMeasurements(20, 30, 40);
            wd.SetMeasurements(50, 60, 80);
            wd.SetMeasurements(20, 30, 40);
        }
Esempio n. 2
0
        public void ObserverTest()
        {
            // {
            //     Subject subject = new ConcreteSubject();
            //
            //     var a = new ObserverA();
            //     var b = new ObserverB();
            //     subject.Attach(a);
            //     subject.Attach(b);
            //     subject.Notify();
            //     subject.Delete(b);
            //     subject.Notify();
            // }
            // {
            //     var cat = new Cat();
            //     cat.Attach(new Master());
            //     cat.Attach(new Mouse());
            //     cat.Cry();
            // }
            {
                var cat    = new Cat();
                var master = new Master();
                var mouse  = new Mouse();
                cat.Attach(master);
                cat.Attach(mouse);
                cat.Cry();
                cat.Delete(master);
                cat.Cry();
            }
            {
                var weather = new WeatherData();
                var party1  = new ForcastPartyDisplay();
                var party2  = new ThirdPartyDisplay();
                weather.RegisterObserver(party1);
                weather.RegisterObserver(party2);
                weather._data.Hum          = 25;
                weather._data.Tempoerature = 30;
                weather.Notify();

                party1.Display();
                party2.Display();
            }
            {
                var person = new Person();
                var mouse  = new 观察者模式.自带的接口.Mouse();
                var cat    = new 观察者模式.自带的接口.Cat(new List <IObserver <int> > {
                    person
                });
                mouse.Subscribe(cat);

                cat.Cry(1);
                mouse.OnCompleted();
                cat.Cry(3);
            }
        }