c#观察者模式

来源:互联网 发布:岛国软件免费下载 编辑:程序博客网 时间:2024/05/02 04:42

 class Program    {        static void Main(string[] args)        {            Subject subject = new Subject();            // Observer1 takes a subscription to the store            Observer observer1 = new Observer("Observer 1");            subject.Subscribe(observer1);            // Observer2 also subscribes to the store            subject.Subscribe(new Observer("Observer 2"));            subject.Inventory++;            // Observer1 unsubscribes and Observer3 subscribes to notifications.            subject.Unsubscribe(observer1);            subject.Subscribe(new Observer("Observer 3"));            subject.Inventory++;            Console.ReadLine();        }    }    /// <summary>    /// 订阅信息接口    /// </summary>    interface ISubject    {        /// <summary>        /// 订阅信息        /// </summary>        /// <param name="observer">要观察的目标对象</param>        void Subscribe(Observer observer);        void Unsubscribe(Observer observer);        /// <summary>        /// 消息通知        /// </summary>        void Notify();    }    public class Subject : ISubject    {        private List<Observer> observers = new List<Observer>();        private int _int;        public int Inventory        {            get            {                return _int;            }            set            {                // Just to make sure that if there is an increase in inventory                 // then only we are notifying the observers.                if (value > _int)                    Notify();                _int = value;            }        }        public void Subscribe(Observer observer)        {            observers.Add(observer);        }        public void Unsubscribe(Observer observer)        {            observers.Remove(observer);        }        public void Notify()        {            observers.ForEach(x => x.Update());        }    }    interface IObserver    {        void Update();    }    public class Observer : IObserver    {        public string ObserverName { get; private set; }        public Observer(string name)        {            this.ObserverName = name;        }        public void Update()        {            Console.WriteLine("{0}: A new product has arrived at the store", this.ObserverName);        }    }

输出如下内容:




0 0
原创粉丝点击