Пример #1
0
        static void ObserverTester()
        {
            #region sample 1
            // Configure Observer pattern
            var s = new ConcreteSubject();

            s.Attach(new ConcreteObserver(s, "X"));
            s.Attach(new ConcreteObserver(s, "Y"));
            s.Attach(new ConcreteObserver(s, "Z"));

            // Change subject and notify observers
            s.SubjectState = "ABC";
            s.Notify();
            #endregion

            #region sample 2
            // Create IBM stock and attach investors
            var ibm = new IBM("IBM", 120.00);
            ibm.Attach(new Investor("Sorros"));
            ibm.Attach(new Investor("Berkshire"));

            // Fluctuating prices will notify investors
            ibm.Price = 120.10;
            ibm.Price = 121.00;
            ibm.Price = 120.50;
            ibm.Price = 120.75;
            #endregion
        }
Пример #2
0
        public void Send2Signals_WithSomeClient_MustBeUpdateAtSecondSignal()
        {
            var testSubject = new ConcreteSubject()
            {
                SubjectState = "signal1"
            };
            var observer1 = new ConcreteObserver(testSubject, "observer1");
            var observer2 = new ConcreteObserver(testSubject, "observer2");
            var observer3 = new ConcreteObserver(testSubject, "observer3");

            testSubject.Attach(observer1);
            testSubject.Attach(observer2);
            testSubject.Attach(observer3);

            testSubject.Notify();
            Assert.Equal("signal1", observer1.GetState());
            Assert.Equal("signal1", observer2.GetState());
            Assert.Equal("signal1", observer2.GetState());

            testSubject.SubjectState = "signal2";
            testSubject.Notify();

            Assert.Equal("signal2", observer1.GetState());
            Assert.Equal("signal2", observer2.GetState());
            Assert.Equal("signal2", observer2.GetState());
        }
Пример #3
0
        static void Main(string[] args)
        {
            #region
            ////Cat Mouse Owner and child

            //Cat cat = new Cat("Tom");

            //Observer mouse = new Mouse("Jerry", cat);

            //Observer master = new Master(cat);

            //Observer1 baby = new Baby(cat);

            //cat.Cry();

            //Console.Read();

            #endregion

            #region For observer pattern structure
            ConcreteSubject subject = new ConcreteSubject();

            subject.Attach(new ConcreteObserver(subject, "Observer A"));
            subject.Attach(new ConcreteObserver(subject, "Observer B"));
            subject.Attach(new ConcreteObserver(subject, "Observer C"));

            subject.SubjectState = "Ready";
            subject.Notify();

            #endregion

            Console.Read();
        }
Пример #4
0
        static void Main1802()
        {
            Console.WriteLine("Hello Observer Pattern!");

            string path1 = "machine_name";
            string path2 = "C$";

            string path = System.IO.Path.Combine("\\\\", path1, path2);

            var subject = new ConcreteSubject("PrisonBreakGroup");
            // Step2.定义4个观察者对象
            IObserver playerA = new Player("Mical");

            subject.Attach(playerA);
            IObserver playerB = new Player("Linken");

            subject.Attach(playerB);
            IObserver playerC = new Player("Jim");

            subject.Attach(playerC);
            IObserver playerD = new Player("Norwa");

            subject.Attach(playerD);
            // Step3.当某盟友遭受攻击
            playerA.BeAttacked(subject);

            Console.ReadLine();
        }
Пример #5
0
        static void Main(string[] args)
        {
            ConcreteSubject subject = new ConcreteSubject();

            subject.Attach(new ConcreteObserver(subject));
            subject.Attach(new ConcreteObserver(subject));
            subject.State = "New State";
            subject.Notify();
        }
Пример #6
0
        public static void ClientMain()
        {
            ConcreteSubject subject = new ConcreteSubject();

            subject.Attach(new ConcreteObserver());
            subject.Attach(new ConcreteObserver());
            subject.State = "Some state";
            subject.Notify();
        }
Пример #7
0
        public ObserverTest()
        {
            _subject   = new ConcreteSubject();
            _observerA = new ConcreteObserverA(_subject);
            _observerB = new ConcreteObserverB(_subject);

            _subject.Attach(_observerA);
            _subject.Attach(_observerB);
        }
Пример #8
0
        public static void Test()
        {
            var concreteSubject = new ConcreteSubject("state 1");

            concreteSubject.Attach(new ConcreteObserver("1"));
            concreteSubject.Attach(new ConcreteObserver("2"));

            concreteSubject.State = "state 2";
            concreteSubject.State = "state 3";
        }
Пример #9
0
        public ConcreteSubject SubjectObserver()
        {
            ConcreteSubject concreteSubject = new ConcreteSubject();

            concreteSubject.Attach(new ConcreteObserver(concreteSubject, "X"));
            concreteSubject.Attach(new ConcreteObserver(concreteSubject, "Y"));
            concreteSubject.Attach(new ConcreteObserver(concreteSubject, "Z"));

            return(concreteSubject);
        }
Пример #10
0
        public static void PublishPattern()
        {
            ConcreteSubject s = new ConcreteSubject();

            s.Attach(new ConcreteObserver(s, "X"));
            s.Attach(new ConcreteObserver(s, "Y"));
            s.Attach(new ConcreteObserver(s, "Z"));
            s.SubjectState = "ABC";
            s.Notify();
            Console.Read();
        }
Пример #11
0
    static void Main()
    {
        ConcreteSubject s = new ConcreteSubject();

        s.Attach(new ConcreteObserver(s, "X"));
        s.Attach(new ConcreteObserver(s, "Y"));
        s.Attach(new ConcreteObserver(s, "Z"));
        s.SubjectState = "ABC";
        s.Notify();
        Console.ReadKey();
    }
        public void ExecuteObserverStandard()
        {
            ConcreteSubject s = new ConcreteSubject();

            s.Attach(new ConcreteObserver(s, "X"));
            s.Attach(new ConcreteObserver(s, "Y"));
            s.Attach(new ConcreteObserver(s, "Z"));

            s.SubjectState = "ABC";
            s.Notify();
        }
Пример #13
0
        private static void TestSample()
        {
            ConcreteSubject concreteSubject = new ConcreteSubject();

            concreteSubject.Attach(new ConcreteObserver(concreteSubject, "A"));
            concreteSubject.Attach(new ConcreteObserver(concreteSubject, "B"));
            concreteSubject.Attach(new ConcreteObserver(concreteSubject, "C"));

            concreteSubject.SubjectState = "xyz";

        }
        public void Test_Observer_normal()
        {
            ConcreteSubject s = new ConcreteSubject();

            s.Attach(new ConcreteObserver(s, "x"));
            s.Attach(new ConcreteObserver(s, "y"));
            s.Attach(new ConcreteObserver(s, "z"));

            s.SubjectState = "abc";
            s.Notify();
        }
Пример #15
0
        //观察者模式 [əb'zə:və, ɔb-]
        static void Main(string[] args)
        {
            ConcreteSubject s = new ConcreteSubject();
            s.Attach(new ConcreteObserver(s, "a"));
            s.Attach(new ConcreteObserver(s, "b"));
            s.Attach(new ConcreteObserver(s, "c"));

            s.SubjectState = "run";
            s.Notify();
            Console.Read();
        }
Пример #16
0
        /// <summary>
        /// 观察者模式
        /// </summary>
        static void TestObserver()
        {
            ConcreteSubject s = new ConcreteSubject();

            s.Attach(new ConcreteObserver(s, "X"));
            s.Attach(new ConcreteObserver(s, "Y"));
            s.Attach(new ConcreteObserver(s, "Z"));

            s.SubjectState = "ABC";
            s.Notify();
        }
Пример #17
0
    static void Main()
    {
        var s = new ConcreteSubject();

        s.Attach(new ConcreteObserver(s, "Observer-X", 10));
        s.Attach(new ConcreteObserver(s, "Observer-Y", 20));
        s.Attach(new ConcreteObserver(s, "Observer-Z", 30));

        s.SetState(12);

        Console.ReadKey();
    }
Пример #18
0
        public void Initialize()
        {
            cs = new ConcreteSubject();

            co1 = new ConcreteObserver(cs);
            co2 = new ConcreteObserver(cs);
            co3 = new ConcreteObserver(cs);

            cs.Attach(co1);
            cs.Attach(co2);
            cs.Attach(co3);
        }
        public void ObserverTest3()
        {
            ConcreteSubject  subject   = new ConcreteSubject();
            ConcreteObserver observer1 = new ConcreteObserver();
            ConcreteObserver observer2 = new ConcreteObserver();

            subject.Attach(observer1);
            subject.Notify();
            subject.Attach(observer2);
            subject.Notify();
            Assert.True((observer1.Notified == 2) && (observer2.Notified == 1));
        }
        public void Test()
        {
            Observer coa = new ConreteObserverA();
            Observer cob = new ConreteObserverB();
            Observer coc = new ConreteObserverC();
            Subject  cs  = new ConcreteSubject();

            cs.Attach(coa);
            cs.Attach(cob);
            cs.Attach(coc);
            cs.Notify(5);
        }
Пример #21
0
        public void subjectCount()
        {
            ConcreteSubject  subject  = new ConcreteSubject();
            Ellipse          testEll1 = new Ellipse();
            ConcreteObserver ob1      = new ConcreteObserver(subject, testEll1);
            Ellipse          testEll2 = new Ellipse();
            ConcreteObserver ob2      = new ConcreteObserver(subject, testEll2);

            subject.Attach(ob1);
            subject.Attach(ob2);
            Assert.AreEqual(subject.observers.Count, 2);
        }
Пример #22
0
        public static void ObserverStructural()
        {
            // Configure Observer pattern
            ConcreteSubject s = new ConcreteSubject();

            s.Attach(new ConcreteObserver(s, "X"));
            s.Attach(new ConcreteObserver(s, "Y"));
            s.Attach(new ConcreteObserver(s, "Z"));

            // Change subject and notify observers
            s.SubjectState = "ABC";
            s.Notify();
        }
Пример #23
0
        /// <summary>
        /// Entry point into console application.
        /// </summary>
        public void Run()
        {
            // Configure Observer pattern
            var s = new ConcreteSubject();

            s.Attach(new ConcreteObserver(s, "X"));
            s.Attach(new ConcreteObserver(s, "Y"));
            s.Attach(new ConcreteObserver(s, "Z"));

            // Change subject and notify observers
            s.SubjectState = "ABC";
            s.Notify();
        }
Пример #24
0
        public void TestObserverPattern()
        {
            ConcreteSubject concreteSubject = new ConcreteSubject();

            concreteSubject.Attach(new ConcreteObserver(concreteSubject, "x"));
            concreteSubject.Attach(new ConcreteObserver(concreteSubject, "y"));
            concreteSubject.Attach(new ConcreteObserver(concreteSubject, "z"));

            concreteSubject.SubjectState = "ABC";
            concreteSubject.Notify();

            Assert.True(true);
        }
Пример #25
0
        static void ObserverDefinedTest()
        {
            // 具体目标
            ConcreteSubject s = new ConcreteSubject();

            // 添加观察者
            s.Attach(new ConcreteObserver(s, "X"));
            s.Attach(new ConcreteObserver(s, "Y"));
            s.Attach(new ConcreteObserver(s, "Z"));
            // 更改具体目标的状态
            s.SubjectState = "ABC";
            // 通知观察者
            s.Notify();
        }
Пример #26
0
        public void ObserverUsage()
        {
            ConcreteSubject s = new ConcreteSubject();

            s.Attach(new ConcreteObserver(s, "X"));
            s.Attach(new ConcreteObserver(s, "Y"));
            s.Attach(new ConcreteObserver(s, "Z"));

            // Change subject and notify observers
            s.SubjectState = "ABC";
            s.Notify();

            Assert.IsTrue(true);
        }
Пример #27
0
        private static void Main()
        {
            var subject   = new ConcreteSubject();
            var observer1 = new ConcreteObserver("observer1");
            var observer2 = new ConcreteObserver("observer2");

            subject.Attach(observer1);
            subject.Attach(observer2);
            subject.SubjectState = "Modified";
            subject.Detach(observer1);
            subject.Detach(observer2);
            subject.SubjectState = "Modified Again !";
            Console.ReadKey();
        }
        public void ObserverTest4()
        {
            ConcreteSubject  subject   = new ConcreteSubject();
            ConcreteObserver observer1 = new ConcreteObserver();
            ConcreteObserver observer2 = new ConcreteObserver();

            subject.Attach(observer1);
            subject.Notify(subject);
            subject.Attach(observer2);
            subject.Notify(subject);
            subject.Detach(observer1);
            subject.Notify(subject);
            Assert.True(observer1.Notified == observer2.Notified);
        }
Пример #29
0
    // Use this for initialization
    void Start()
    {
        ConcreteSubject subject = new ConcreteSubject();

        subject.Attach(new ConcreteObserver(subject, "Observe A"));
        subject.Attach(new ConcreteObserver(subject, "Observe B"));
        subject.Attach(new ConcreteObserver(subject, "Observe C"));

        subject.SubjectState = "Ready";
        subject.Notify();

        MyDelegate.testDelegate += log1;
        MyDelegate.testDelegate += log2;
        MyDelegate.testDe("TestDelegate");
    }
Пример #30
0
        //LD_OBSERVER_000
        public static void RunObserverBehavioralPattern()
        {
            //one subject and two observers
            ISubject <string> subject = new ConcreteSubject <string>();

            ObserverBehavioralPattern.IObserver <string> observer1 = new ConcreteObserver <string>("observer1");
            ObserverBehavioralPattern.IObserver <string> observer2 = new ConcreteObserver <string>("observer2");

            //register the observers to the subject
            subject.Attach(observer1);
            subject.Attach(observer2);

            //a change to the subject automatically notifies all the observers
            subject.SetState("stateX");
        }
Пример #31
0
        private static void callObserver()
        {
            ConcreteSubject s = new ConcreteSubject();

            s.Attach(new ConcreteObserver(s, "X"));
            s.Attach(new ConcreteObserver(s, "Y"));
            s.Attach(new ConcreteObserver(s, "Z"));

            // Change subject and notify observers
            s.SubjectState = "ABC";
            s.Notify();

            // Wait for user
            Console.ReadKey();
        }
Пример #32
0
	// Update is called once per frame
	void UnitTest () 
	{
		// 主題
		ConcreteSubject theSubject = new ConcreteSubject();

		// 加入觀察者
		ConcreteObserver1 theObserver1 = new ConcreteObserver1(theSubject);
		theSubject.Attach( theObserver1 );
		theSubject.Attach( new ConcreteObserver2(theSubject) );

		// 設定Subject
		theSubject.SetState("Subject狀態1");

		// 顯示狀態
		theObserver1.ShowState();	
	}
Пример #33
0
        /// <summary>
        /// Entry point into console application.
        /// </summary>
        static void Demo()
        {
            // Configure Observer pattern
            ConcreteSubject s = new ConcreteSubject();

            s.Attach(new ConcreteObserver(s, "X"));
            s.Attach(new ConcreteObserver(s, "Y"));
            s.Attach(new ConcreteObserver(s, "Z"));

            // Change subject and notify observers
            s.SubjectState = "ABC";
            s.Notify();

            // Wait for user
            Console.ReadKey();
        }
Пример #34
0
    public static void Main()
    {
        ConcreteSubject s = ConcreteSubject.GetInstance();

        s.Attach(new PusherObserver(s));
        Listen(s);
    }
Пример #35
0
        public static void TestObservers()
        {
            var s = new ConcreteSubject();

            s.Attach(new ConcreteObserver(s, "X"));
            s.Attach(new ConcreteObserver(s, "Y"));
            s.Attach(new ConcreteObserver(s, "Z"));

            s.SubjectState = "ABC";
            var dict = s.Notify(true);

            foreach (var dictVal in dict)
            {
                StringAssert.AreEqualIgnoringCase(dictVal.Value, "ABC");
            }
        }
Пример #36
0
        static void Main(string[] args)
        {
            //IBM myIBM = new IBM("IBM", 120.00);
            //myIBM.Attach(new Investor("Sorres"));
            //myIBM.Attach(new Investor("Berkeley"));

            //myIBM.Price = 120.10;
            //myIBM.Price = 122;
            //myIBM.Price = 130;

            ConcreteSubject myConcreteSubject = new ConcreteSubject();
            myConcreteSubject.Attach(new ConcreteObserver("Hans", myConcreteSubject));
            myConcreteSubject.Attach(new ConcreteObserver("Jokke", myConcreteSubject));

            myConcreteSubject.State = "Hello";
            myConcreteSubject.State = "Derp";
        }
Пример #37
0
    // Entry point into console application.
    static void Main()
    {
        // Configure Observer pattern
        ConcreteSubject s = new ConcreteSubject();

        s.Attach(new ConcreteObserver(s, "X"));
        s.Attach(new ConcreteObserver(s, "Y"));

        // Change subject and notify observers
        s.SubjectState = "A";
        s.Notify();

        Console.WriteLine();

        s.Attach(new ConcreteObserver(s, "Z"));

        s.SubjectState = "B";
        s.Notify();

        // Wait for user input
        Console.ReadKey();
    }
Пример #38
0
  public static void Main( string[] args )
  {
    // Configure Observer structure
    ConcreteSubject s = new ConcreteSubject();

    s.Attach( new ConcreteObserver( s, "X" ) );
    s.Attach( new ConcreteObserver( s, "Y" ) );
    s.Attach( new ConcreteObserver( s, "Z" ) );

    // Change subject and notify observers
    s.SubjectState = "ABC";
    s.Notify();
  }