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

来源:互联网 发布:小型公司网络搭建 编辑:程序博客网 时间:2024/06/05 20:12
using System;using System.Collections.Generic;using System.Text;namespace 观察者模式{    class Program    {        static void Main(string[] args)        {            //老板胡汉三            Boss huhansan = new Boss();            //看股票的同事            StockObserver tongshi1 = new StockObserver("魏关姹", huhansan);            //看NBA的同事            NBAObserver tongshi2 = new NBAObserver("易管查", huhansan);            huhansan.Update += new EventHandler(tongshi1.CloseStockMarket);            huhansan.Update += new EventHandler(tongshi2.CloseNBADirectSeeding);            //老板回来            huhansan.SubjectState = "我胡汉三回来了!";            //发出通知            huhansan.Notify();            Console.Read();        }    }    //通知者接口    interface Subject    {        void Notify();        string SubjectState        {            get;            set;        }    }    //事件处理程序的委托    delegate void EventHandler();    class Secretary : Subject    {        //声明一事件Update,类型为委托EventHandler        public event EventHandler Update;        private string action;        public void Notify()        {            Update();        }        public string SubjectState        {            get { return action; }            set { action = value; }        }    }    class Boss : Subject    {        //声明一事件Update,类型为委托EventHandler        public event EventHandler Update;        private string action;        public void Notify()        {            Update();        }        public string SubjectState        {            get { return action; }            set { action = value; }        }    }    //看股票的同事    class StockObserver    {        private string name;        private Subject sub;        public StockObserver(string name, Subject sub)        {            this.name = name;            this.sub = sub;        }        //关闭股票行情        public void CloseStockMarket()        {            Console.WriteLine("{0} {1} 关闭股票行情,继续工作!", sub.SubjectState, name);        }    }    //看NBA的同事    class NBAObserver    {        private string name;        private Subject sub;        public NBAObserver(string name, Subject sub)        {            this.name = name;            this.sub = sub;        }        //关闭NBA直播        public void CloseNBADirectSeeding()        {            Console.WriteLine("{0} {1} 关闭NBA直播,继续工作!", sub.SubjectState, name);        }    }}
0 0
原创粉丝点击