当前位置: 首页 > news >正文

天津市住房与城乡建设厅网站西安查派网站建设

天津市住房与城乡建设厅网站,西安查派网站建设,太原市网站制作,武威百度做网站多少钱题目:假设你正在开发一个简单的新闻发布系统,该系统允许用户订阅不同的新闻频道,并在有新闻发布时向订阅者发送通知。使用观察者模式设计和实现该系统。观察者模式的相关概念和定义: 观察者模式是一种行为设计模式,它定…
题目:假设你正在开发一个简单的新闻发布系统,该系统允许用户订阅不同的新闻频道,并在有新闻发布时向订阅者发送通知。使用观察者模式设计和实现该系统。观察者模式的相关概念和定义:
观察者模式是一种行为设计模式,它定义了对象之间的一对多依赖关系,以便当一个对象的状态发生变化时,可以自动通知其他相关对象。在这种模式中,存在两种角色:主题(Subject):也称为被观察者或发布者,在观察者模式中起通知的作用。主题维护着一组观察者,并提供注册、注销和通知的方法。观察者(Observer):也称为订阅者或监听器,观察者通过注册到主题来接收通知并进行相应的处理。当主题的状态发生变化时,观察者将根据接收到的通知执行相应的操作。观察者模式的基本思想是主题与观察者之间是松耦合的关系,使得它们可以独立地变化,而不会互相影响。主题只需要维护观察者列表并通知它们即可,无需了解观察者具体的实现细节。在上述的新闻发布系统中,主题可以是一个新闻频道,观察者可以是用户订阅该频道的用户。当有新闻发布时,主题将通知所有相关观察者,并将新闻内容传递给它们。观察者接收到通知后可以根据需要进行相应的处理,比如显示通知、发送邮件等。通过观察者模式,我们可以实现松耦合的系统设计,使得主题和观察者可以独立地扩展和修改,从而提高代码的可维护性和可扩展性。同时,观察者模式也符合开闭原则,因为我们可以动态地添加或删除观察者,而无需修改主题的代码。

参考代码:


class Program
{static void Main(string[] args){NewsChannel channel = new NewsChannel();// 创建观察者对象IObserver subscriber1 = new Subscriber("订阅者1");IObserver subscriber2 = new Subscriber("订阅者2");IObserver subscriber3 = new Subscriber("订阅者3");// 注册观察者channel.RegisterObserver(subscriber1);channel.RegisterObserver(subscriber2);channel.RegisterObserver(subscriber3);// 发布新闻channel.PublishNews("今日头条:天气晴朗!");Console.WriteLine();// 取消订阅观察者channel.UnregisterObserver(subscriber2);// 发布新闻channel.PublishNews("特别新闻:重要通知!");}
}public interface ISubject 
{void RegisterObserver(IObserver observer);void UnregisterObserver(IObserver observer);void NotifyObservers(string news);
}public interface IObserver 
{void Update(string news);
}public class NewsChannel : ISubject
{private List<IObserver> _observers;private string lastNews;public NewsChannel(){_observers = new List<IObserver>();}public void NotifyObservers(string news){foreach (var observer in _observers){observer.Update(news);}}public void RegisterObserver(IObserver observer){_observers.Add(observer);}public void UnregisterObserver(IObserver observer){_observers.Remove(observer);}public void PublishNews(string news){lastNews = news;Console.WriteLine("新闻发布:" + news);NotifyObservers(news);}}public class Subscriber : IObserver
{private string _name;public Subscriber(string name ) {_name = name;}public void Update(string news){Console.WriteLine(_name + " 收到新闻:" + news);}}
http://www.15wanjia.com/news/171940.html

相关文章:

  • 国外美容网站怎么注册网页
  • 电子商务营销专业就业方向百度seo关键词优化市场
  • 云服务器放网站快么网站功能策划
  • 大学生作业做网站广州建设技术职业学院官网
  • 网站开发价格多少怎么自己做淘宝客网站吗
  • 本地安装网站无法连接数据库免费网址域名
  • 创新的商城网站建网站注册公司
  • 郑州网站推广外包网站建设衤金手指花总十四
  • 电脑小游戏网站徐州网络科技公司有哪些
  • typecho 企业网站安阳seo公司
  • 新手怎么搭建网站知雅汇网页设计实训报告
  • 张浦专业做网站公司注册地址就是公司地址吗
  • 公司网站怎么注销创世网站
  • 诸暨网站制作建设方案怎么写
  • 论坛网站论坛网站建设建设优秀音乐网站设计欣赏
  • 凤凰网站ui专业设计游戏加盟招商
  • 茶山做网站wordpress结婚模板
  • 网站页面下沉的特效代码邢台网站建设讯息
  • 传统企业公司网站优化案例微信小程序功能开发
  • 江苏省网站备案系统做网站需要域名 域名是啥
  • 书籍网站开发多少钱个人主页的html设计
  • 大一学生做的网站智慧建设网站
  • 泰州网站制作专业网站开发软件开发项目
  • 淘宝网站建设费用开发公司施工管理事业部领导如何同下属协调沟通
  • 企业网站建设需要哪些设备网站建设远程教育大学论文
  • 网站设计一般多长时间松江区网站建设
  • 中国都有哪些网站高端礼品定制网站
  • 织梦医疗网站源码建设银行网站多少
  • 西部数码网站管理助手v4.0什么网站可以做邮件列表
  • 有什么做衣服的网站吗规划网站开发总体方案