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

南昌建设企业网站公司吉林最新消息今天新增

南昌建设企业网站公司,吉林最新消息今天新增,浏阳市网站建设,wordpress添加订阅会员文章目录 一、概述二、示例三、模式定义四、其他 一、概述 ​ 与其叫他观察者模式#xff0c;我更愿意叫他叫 订阅-发布模式 #xff0c;这种模式在我们生活中非常常见#xff0c;比如#xff1a;追番了某个电视剧#xff0c;当电视剧有更新的时候会第一时间通知你。当你… 文章目录 一、概述二、示例三、模式定义四、其他 一、概述 ​ 与其叫他观察者模式我更愿意叫他叫 订阅-发布模式 这种模式在我们生活中非常常见比如追番了某个电视剧当电视剧有更新的时候会第一时间通知你。当你预约了某款游戏后游戏发布后就会立刻通知你而不需要你每天都去关注游戏是否上线。 二、示例 ​ 我想要说明一点对于每一种设计模式最重要的不是代码的结构而是其中所蕴含的思想你应该要去考虑的是代码为什么这么设计而不是仅仅照着这样设计因为每一种设计模式到不同的人手里写出来的代码多多少少会有些许差别但是其核心的思想是一样的那就是设计原则 分析 此模式需要发布者及时地通知所有订阅者因此发布者知道所有的订阅者的信息。发布者可以添加或者移除订阅者订阅者也可以进行订阅或者取消订阅的操作。 代码 package main// Publisher 发布者接口 type Publisher interface {AddSubscriber(subscriber Subscriber) // 添加订阅者RemoveSubscriber(subscriber Subscriber) // 移除订阅者NotifySubscribers() // 通知订阅者 }// Subscriber 订阅者接口 type Subscriber interface {GetID() string // 获取订阅者IDNotify(contextMessage string) // 通知订阅者 }// Object 被观察者, 实现 Publisher 接口 type Object struct {Subscribers []Subscriber // 订阅者列表ContextMessage string // 上下文信息 }func (p *Object) AddSubscriber(s Subscriber) {p.Subscribers append(p.Subscribers, s) }func (p *Object) RemoveSubscriber(s Subscriber) {for i, subscriber : range p.Subscribers {if subscriber.GetID() s.GetID() {p.Subscribers append(p.Subscribers[:i], p.Subscribers[i1:]...)}} }func (p *Object) NotifySubscribers() {for _, subscriber : range p.Subscribers {subscriber.Notify(p.ContextMessage)} }// UpdateContextMessage 更新上下文信息 func (p *Object) UpdateContextMessage(newMessage string) {p.ContextMessage newMessagep.NotifySubscribers() }// SubscriberA 订阅者A, 实现 Subscriber 接口 type SubscriberA struct {ID string }func (s *SubscriberA) GetID() string {return s.ID }func (s *SubscriberA) Notify(contextMessage string) {println(SubscriberA received:, contextMessage) }// SubscriberB 订阅者B, 实现 Subscriber 接口 type SubscriberB struct {ID string }func (s *SubscriberB) GetID() string {return s.ID }func (s *SubscriberB) Notify(contextMessage string) {println(SubscriberB received:, contextMessage) }func main() {// 创建被观察者object : Object{}// 创建订阅者subscriberA : SubscriberA{ID: subscriberA}subscriberB : SubscriberB{ID: subscriberB}// 添加订阅者 A 和 Bobject.AddSubscriber(subscriberA)object.AddSubscriber(subscriberB)// 更新上下文信息, 通知所有订阅者object.UpdateContextMessage(Hello World!)// 移除订阅者Bobject.RemoveSubscriber(subscriberB)// 更新上下文信息,object.UpdateContextMessage(Hello World Again!) }​ 上述代码还没有一些没有去做建议你可以尝试去实现: 订阅者能够主动的订阅或者取消订阅建议你尝试着去完成这一功能通知顺序是有序/无需的 三、模式定义 ​ 观察者模式定义了对象之间的一对多依赖这样一来每当一个对象改变状态时他所所有的依赖者都会收到通知并自动更新。 四、其他 ​ java 中也有内置的观察者模式。java.util 包内包含最基本的 Observer 接口和 Observable 类如果有兴趣可以去了解一下其运作方式。
http://www.tj-hxxt.cn/news/130186.html

相关文章:

  • vps 做网站wordpress图片分页插件下载
  • 网站建设980元wordpress不在根目录
  • 西宁高端网站制作广告设计与制作
  • 一站式商家服务平台知名企业公司
  • 一件代发50个货源网站石家庄百度快照优化排名
  • 大学校园门户网站建设方案江淮网站开发
  • 兰州展柜公司网站建设手机上登录qq网页版
  • 网站开发的实施方案网线制作实训报告
  • 网站制作建设有哪些旅游系统
  • 牙科医院网站推广方案网站建设实战教程
  • 花店网站建设量力商务大厦网站建设
  • 网站流量统计表北京建设网经济适用房
  • 教你做兼职的网站百度搜索官方网站
  • 企业营销型网站的内容成都广告公司排行榜
  • 赣州网站制作百度网盘资源搜索引擎搜索
  • 高质量的合肥网站建设建筑模型设计网站建设
  • 中国航空集团建设开发有限公司网站seo点击排名软件营销工具
  • 怎么写网站文案管理系统 网站模板
  • 成都专业网站建设公司上海注册公司扶持政策
  • 纯jsp做的留言板网站网站被k 多久恢复
  • 网站建设j介绍ppt棋牌app开发需要多钱
  • 婚纱网站模板杭州网络公司建网站
  • 网站开发技能证书做同性恋的珠宝网站
  • 网站页面如何设计企业文化墙设计网站推荐
  • 网站开发微信登录流程网站开发需要掌握哪些知识
  • nas做流媒体网站怎样建设手机网站
  • 老外做牛排的视频网站深圳积分商城网站设计
  • 那个网站可以兼职做效果图网站怎样改logo
  • 怎么做让自己的网站微信小程序打不开
  • 网站后台左侧导航折叠效果打不开网页设计工作内容怎么写