C#设计模式- 观察者模式(1)

来源:互联网 发布:手绘图片是什么软件 编辑:程序博客网 时间:2024/05/16 11:51
using System;using System.Collections.Generic;using System.Text;namespace 观察者模式{    class Program    {        static void Main(string[] args)        {            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();        }    }    abstract class Subject    {        private IList<Observer> observers = new List<Observer>();        //增加观察者        public void Attach(Observer observer)        {            observers.Add(observer);        }        //移除观察者        public void Detach(Observer observer)        {            observers.Remove(observer);        }        //通知        public void Notify()        {            foreach (Observer o in observers)            {                o.Update();            }        }    }    //具体通知者    class ConcreteSubject : Subject    {        private string subjectState;        //具体通知者状态        public string SubjectState        {            get { return subjectState; }            set { subjectState = value; }        }    }    abstract class Observer    {        public abstract void Update();    }    class ConcreteObserver : Observer    {        private string name;        private string observerState;        private ConcreteSubject subject;        public ConcreteObserver(          ConcreteSubject subject, string name)        {            this.subject = subject;            this.name = name;        }        //更新        public override void Update()        {            observerState = subject.SubjectState;            Console.WriteLine("观察者{0}的新状态是{1}",              name, observerState);        }        public ConcreteSubject Subject        {            get { return subject; }            set { subject = value; }        }    }}
1 0
原创粉丝点击