示例#1
0
        static void Main(string[] args)
        {
            //观察者模式

            ConcreateSubject subject = new ConcreateSubject();

            subject.Aattach(new ConcreateObserver(subject, "A"));
            subject.Aattach(new ConcreateObserver(subject, "B"));
            subject.Aattach(new ConcreateObserver(subject, "C"));
            subject.Aattach(new ConcreateObserver(subject, "D"));
            subject.Subjectstate = "xyz";
            subject.Notify();


            Other.Boss          boss     = new Other.Boss();
            Other.StackObserver stackobs = new Other.StackObserver("刘德华", boss);

            boss.Addach(stackobs);
            boss.subjectstate = "老板回来了";
            boss.Notify();



            ObserverDelegate.Boss bos = new ObserverDelegate.Boss();

            ObserverDelegate.StackObserver    stack = new ObserverDelegate.StackObserver("刘德华", bos);
            ObserverDelegate.NBAStackObserver nba   = new ObserverDelegate.NBAStackObserver("张学友", bos);
            bos.Update     += new ObserverDelegate.EventHandler(stack.CloseStackMarket);
            bos.Update     += new ObserverDelegate.EventHandler(nba.CloseNBADirectseeding);
            bos.subjectsate = "老板来了";
            bos.Notify();

            Console.Read();
        }
示例#2
0
        private static void Test1()
        {
            // 实例化具体对象主题(监控者~~)
            ConcreateSubject subject = new ConcreateSubject();

            // 增加观察者 让主题对象关联到观察者
            subject.Attach(new ConcreteObserve(subject, "x"));
            subject.Attach(new ConcreteObserve(subject, "y"));
            subject.Attach(new ConcreteObserve(subject, "z"));

            subject.SubjectState = "发出通知。";
            subject.Notify();
        }
示例#3
0
 public ConcreteObserver(ConcreateSubject subject, string name)
 {
     this.name    = name;
     this.subject = subject;
 }