首页 > 学院 > 开发设计 > 正文

观察者模式Demo

2019-11-17 03:19:29
字体:
来源:转载
供稿:网友

观察者模式Demo

usingSystem;usingSystem.Collections.Generic; namespaceDemo{#region抽象层,定义了观察者模式///<summary>///(抽象)新闻///</summary>publicinterfaceINews{voidSubScribe(ISubscribers);voidUnSubScribe(ISubscribers);voidPublish(stringnewsTitle);//在具体实现的过程中建立发布与订阅的联系} ///<summary>///(抽象)订阅者///</summary>publicinterfaceISubscriber{voidRead(stringnewsTitle);}#endregion #region实现层,是对抽象层的具体实现///<summary>///(具体)新闻///</summary>publicclassITNews:INews{PRivateList<ISubscriber>readers=newList<ISubscriber>(); publicvoidSubScribe(ISubscribers){readers.Add(s);} publicvoidUnSubScribe(ISubscribers){if(readers.Count>0){readers.Remove(s);}} publicvoidPublish(stringnewsTitle){foreach(ISubscriberiinreaders){i.Read(newsTitle);//<<<<<发布的时候订阅>>>>>}}} ///<summary>///(具体)订阅者///</summary>publicclassSubscriber:ISubscriber{privatestringsubscriber=string.Empty;publicSubscriber(stringsubscriber){this.subscriber=subscriber;} publicvoidRead(stringnewsTitle){Console.WriteLine(string.Format("{0}阅读了IT新闻/"{1}/"",subscriber,newsTitle));}}#endregion publicclassPro{staticvoidMain(string[]args){ITNewsnews=newITNews();Subscriberzs=newSubscriber("张三"),ls=newSubscriber("李四"),ww=newSubscriber("王五"); news.SubScribe(zs);news.SubScribe(ls);news.SubScribe(ww);news.UnSubScribe(ls);//张三取消订阅 news.Publish("2014年移动电商攻坚战:阿里巴巴如何破局?");news.Publish("余额宝还能重回高收益率吗?"); Console.ReadKey();}}}

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表