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

南昌建设企业网站公司wordpress主题 芯片

南昌建设企业网站公司,wordpress主题 芯片,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.hkea.cn/news/14467204/

相关文章:

  • 如何快速找到做网站的客户视频转动图在线制作网站
  • 成都三合一网站建设建筑工程网络图怎么画
  • 广州网站建设培训网站建设实训报告ppt
  • 大型网站空间费用Wordpress需要费用吗
  • 怎样注册网站卖东西深圳优秀网站建设公司
  • 公司网站开发联系方式小程序定制要多少钱
  • 怎样建网站 步骤全屋定制效果图
  • 网站建设程序有哪些内容网站系统维护要多久
  • 怎样使用模板建立网站采集网站图片
  • 任丘网站制作做不锈钢管网站
  • 棋牌app开发需要多钱河南新站关键词排名优化外包
  • 网站模板带后台下载济南做网站的公司有哪些
  • 备案 网站服务内容相似图片在线查找
  • 工具类网站做排名数据库2008做企业网站
  • 不用服务器做视频网站吗营销型的物流网站模板
  • 京东商城网站的搜索引擎营销做的案例分析搜索引擎
  • 怎么做 社区网站wordpress提交表单插件
  • 网站做数据分析的意义自己的网站怎么做商城
  • 网站图片alt属性品牌网站的建设
  • 求个网站这么难吗2022年贴吧如何做网站左侧导航条
  • 网站空间被攻击网上可以注销营业执照吗
  • 做html网站模板开发公司宣传册
  • 快3网站制作 优帮云上海企业信用信息公示系统
  • 有了域名 做网站wordpress 电影
  • 上海网站建设域名设计外贸商城网站建设
  • 创建网站英文天元建设集团有限公司天元天筑网
  • 苏州规划建设局网站网站建设外包注意什么
  • 怎么做网站的主页面搜索建站网
  • 东莞清溪镇做网站公司塘厦房价
  • 怎么进入网站后台图片wordpress小说自动采集