源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

简单的观察者模式示例分享

  • 时间:2020-12-18 17:11 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:简单的观察者模式示例分享
[u]复制代码[/u] 代码如下:
using System; using System.Collections.Generic; namespace Demo {     #region 抽象层,定义了观察者模式     /// <summary>     /// (抽象)新闻     /// </summary>     public interface INews     {         void SubScribe(ISubscriber s);         void UnSubScribe(ISubscriber s);         void Publish(string newsTitle);   //在具体实现的过程中建立发布与订阅的联系     }     /// <summary>     /// (抽象)订阅者     /// </summary>     public interface ISubscriber     {         void Read(string newsTitle);     }     #endregion     #region 实现层,是对抽象层的具体实现     /// <summary>     /// (具体)新闻     /// </summary>     public class ITNews : INews     {         private List<ISubscriber> readers = new List<ISubscriber>();         public void SubScribe(ISubscriber s)         {             readers.Add(s);         }         public void UnSubScribe(ISubscriber s)         {             if (readers.Count >= 0)             {                 readers.Remove(s);             }         }         public void Publish(string newsTitle)         {             foreach (ISubscriber i in readers)             {                 i.Read(newsTitle);          //<<<<<发布的时候订阅>>>>>             }         }     }     /// <summary>     /// (具体)订阅者     /// </summary>     public class Subscriber : ISubscriber     {         private string subscriber = string.Empty;         public Subscriber(string subscriber)         {             this.subscriber = subscriber;         }         public void Read(string newsTitle)         {             Console.WriteLine(string.Format("{0}阅读了IT新闻\"{1}\"", subscriber, newsTitle));         }     }     #endregion     public class Pro     {         static void Main(string[] args)         {             ITNews news = new ITNews();             Subscriber zs = new Subscriber("张三"),                                  ls = new Subscriber("李四"),                                  ww = new Subscriber("王五");             news.SubScribe(zs);             news.SubScribe(ls);             news.SubScribe(ww);             news.UnSubScribe(ls);  //张三取消订阅             news.Publish("2014年移动电商攻坚战:阿里巴巴如何破局?");             news.Publish("余额宝还能重回高收益率吗?");             Console.WriteLine();             Console.ReadKey();         }     } }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部