设计模式之观察者模式

  观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主体对象在状态发生改变时,会通知所有观察者对象,使他们能够自动更新自己。

  通知者接口:

   //通知者接口
    interface ISubject
    {
        void Attach(Observer observer);
        void Datach(Observer observer);
        void Notify();

        string SubjectState { get; set; }
    }

 

  具体的通知者:

 class Boss : ISubject
    {
        private IList<Observer> list = new List<Observer>();
        private string action;
        public void Attach(Observer observer)
        {
            list.Add(observer);
        }

        public void Datach(Observer observer)
        {
            list.Remove(observer);
        }

        public void Notify()
        {
            foreach (var observer in list)
            {
                observer.Update();
            }
        }

        public string SubjectState
        {
            get { return action; }

            set { action = value; }
        }
    }

 

  抽象观察者:

 abstract class Observer
    {
        protected string name;
        protected  ISubject Subject;

        public Observer(string name, ISubject sub)
        {
            this.name = name;
            this.Subject = sub;
        }

        public abstract void Update();
    }

 

  具体观察者:

 class StockObserver:Observer
    {
        public StockObserver(string name, ISubject sub)
            : base(name, sub)
        {
        }
        public override void Update()
        {
            Console.WriteLine("{0}{1} 关闭股票行情,继续工作",Subject.SubjectState,name);
        }
    }

 

posted @ 2015-04-28 16:59  荣码一生  阅读(118)  评论(0编辑  收藏  举报