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

泰安哪个做网站wordpress 指定目录页

泰安哪个做网站,wordpress 指定目录页,有哪些可以做兼职翻译的网站,天津网站优化公司推荐哪家观察者模式 什么是观察者 观察者模式(Observer Pattern)#xff1a;定义对象之间的一种一对多依赖关系#xff0c;使得每当一个对象状态发生改变时#xff0c;其相关依赖对象皆得到通知并被自动更新。观察者模式的别名包括发布-订阅#xff08;Publish/Subscribe#xf…观察者模式 什么是观察者 观察者模式(Observer Pattern)定义对象之间的一种一对多依赖关系使得每当一个对象状态发生改变时其相关依赖对象皆得到通知并被自动更新。观察者模式的别名包括发布-订阅Publish/Subscribe模式、模型-视图Model/View模式、源-监听器Source/Listener模式或从属者Dependents模式。观察者模式是一种对象行为型模式。 结构 **Subject主题**保持一个观察者列表提供添加、删除和通知观察者的方法。**Observer观察者**定义一个更新接口使得在主题状态变化时得到通知。Concrete Subject具体主题实现Subject接口存储状态当状态发生改变时通知所有观察者。Concrete Observer具体观察者实现Observer接口根据主题更新来更新自己的状态。 基本流程 注册观察者观察者向主题注册自己。状态变更主题的状态发生变化。通知观察者主题通过调用注册的观察者的方法来通知它们状态已变化。更新观察者观察者接收到通知后更新自己的状态。 优点 解耦观察者模式能够将主题和观察者解耦它们之间不需要知道对方的存在。可扩展性新增观察者时不需要修改主题的代码符合开闭原则。动态交互可以实现动态的交互主题可以在运行时添加或删除观察者。 缺点 循环引用如果不当使用可能会导致循环引用增加内存管理的难度。性能问题当观察者较多时通知所有观察者可能会造成性能问题。顺序不确定观察者接收通知的顺序是不确定的可能会导致不可预知的副作用。 使用场景 观察者模式通常用于构建松耦合的系统其中一个对象称为主题或发布者可以通知多个其他对象称为观察者或订阅者关于状态的变化。 在线购物平台订单管理 主题Subject订单系统负责在订单状态更新时如确认、发货、收货广播变更事件。观察者Observers包括支付模块、库存管理、物流跟踪等它们监听订单状态更新并执行相应操作。 图形用户界面GUI同步 主题Subject文档管理系统监控文档内容的更改并触发更新事件。观察者Observers界面组件如文本框、滚动条、状态栏等它们接收更新事件并刷新显示。 模型-视图-控制器MVC架构 主题Subject数据模型实时更新数据状态并通知视图与控制器。观察者Observers视图界面和控制器逻辑订阅数据变更视图更新显示控制器响应用户交互。 社交媒体内容更新 主题Subject用户发布系统当用户发布新推文或状态时触发通知。观察者Observers粉丝和关注者他们接收到新内容的通知并更新自己的信息流。 股票交易实时系统 主题Subject股票行情中心实时监控并发布股票价格的变动。观察者Observers交易平台界面、分析工具、自动交易脚本等它们根据行情变化进行决策和操作。 动态配置更新系统 主题Subject配置服务器负责维护应用配置并在配置更新时发送通知。观察者Observers应用服务和组件它们监听配置变更并实时调整自身设置。 注意事项 避免循环引用确保主题和观察者之间不会产生循环引用。管理生命周期合理管理主题和观察者的生命周期避免内存泄漏。线程安全在多线程环境中使用观察者模式时需要考虑线程安全问题 代码案例 package designpatternimport (fmtsync )// Observer 观察者接口 type Observer interface {Update() // Update方法用于接收主题状态变化的通知 }// ConcreteObserver 具体观察者 type ConcreteObserver struct {name string }func (c *ConcreteObserver) Update() {fmt.Printf(%s is notified.\n, c.name) // 具体观察者接收到通知后的具体处理逻辑 }// Subject 主题接口 type Subject interface {RegisterObserver(observer Observer) // 注册观察者DeregisterObserver(observer Observer) // 注销观察者NotifyObservers() // 通知所有观察者 }// ConcreteSubject 具体主题 type ConcreteSubject struct {observers []Observer // 观察者列表state int // 主题状态mu sync.Mutex // 互斥锁用于保护并发访问 }// NewConcreteSubject 创建具体主题实例 func NewConcreteSubject() *ConcreteSubject {return ConcreteSubject{observers: make([]Observer, 0),mu: sync.Mutex{}, // 初始化互斥锁} }func (cs *ConcreteSubject) RegisterObserver(observer Observer) {cs.mu.Lock()defer cs.mu.Unlock()cs.observers append(cs.observers, observer) // 注册观察者到列表中 }func (cs *ConcreteSubject) DeregisterObserver(observer Observer) {cs.mu.Lock()defer cs.mu.Unlock()for i, ob : range cs.observers {if ob observer {cs.observers append(cs.observers[:i], cs.observers[i1:]...) // 从观察者列表中注销观察者break}} }func (cs *ConcreteSubject) NotifyObservers() {cs.mu.Lock()defer cs.mu.Unlock()for _, ob : range cs.observers {ob.Update() // 通知所有观察者主题状态变化} }func (cs *ConcreteSubject) SetState(state int) {cs.mu.Lock()defer cs.mu.Unlock()cs.state state // 设置主题状态cs.NotifyObservers() // 通知所有观察者主题状态变化 }func main() {// 在 main 函数中演示了具体的使用方法创建具体主题实例注册观察者并设置主题状态触发通知subject : NewConcreteSubject()ob1 : ConcreteObserver{ob1}ob2 : ConcreteObserver{ob2}subject.RegisterObserver(ob1)subject.RegisterObserver(ob2)subject.SetState(1) } 模拟一个新闻发布网站 package mainimport (fmtsync )// 新闻类型 type NewsType intconst (Business NewsType iotaTechnologySportsWorldEntertainment )// 观察者接口 type Observer interface {Update(News) }// 具体观察者结构体 type Subscriber struct {Name stringInterests map[NewsType]boolRegister chan NewsTypeUnregister chan NewsType }func NewSubscriber(name string) *Subscriber {return Subscriber{Name: name,Interests: make(map[NewsType]bool),Register: make(chan NewsType),Unregister: make(chan NewsType),} }func (s *Subscriber) Update(news News) {if _, ok : s.Interests[news.Type]; ok {fmt.Printf(%s received news: %s\n, s.Name, news.Headline)} }func (s *Subscriber) RegisterInterest(interest NewsType) {s.Register - interests.Interests[interest] true }func (s *Subscriber) UnregisterInterest(interest NewsType) {s.Unregister - interestdelete(s.Interests, interest) }// 主题接口 type Subject interface {Attach(Observer)Detach(Observer)Notify(string) }// 具体主题结构体 type NewsAgency struct {observers map[Observer]boolnews chan Newsmu sync.Mutex }func NewNewsAgency() *NewsAgency {return NewsAgency{observers: make(map[Observer]bool),news: make(chan News),} }func (a *NewsAgency) Attach(observer Observer) {a.mu.Lock()defer a.mu.Unlock()a.observers[observer] true }func (a *NewsAgency) Detach(observer Observer) {a.mu.Lock()defer a.mu.Unlock()delete(a.observers, observer) }func (a *NewsAgency) Notify(headline string) {for observer, _ : range a.observers {news : News{Headline: headline}go observer.Update(news)} }// 新闻结构体 type News struct {Headline stringType NewsType }func main() {// 创建新闻机构agency : NewNewsAgency()// 创建订阅者alice : NewSubscriber(Alice)bob : NewSubscriber(Bob)// 订阅兴趣alice.RegisterInterest(Business)alice.RegisterInterest(World)bob.RegisterInterest(Technology)bob.RegisterInterest(Entertainment)// 将订阅者作为观察者注册到新闻机构agency.Attach(alice)agency.Attach(bob)// 新闻发布agency.Notify(Big Corp acquired Small Tech for $1B)// 订阅者取消订阅bob.UnregisterInterest(Entertainment)// 再次新闻发布agency.Notify(New breakthrough in AI technology) }定义了 NewsType 类型用于区分不同类型的新闻。Observer 接口有一个 Update 方法用于接收新闻更新。Subscriber 结构体代表具体的观察者它包含订阅者的名字和兴趣以及注册和注销兴趣的通道。Subject 接口包含 Attach、Detach 和 Notify 方法。NewsAgency 结构体代表具体的主题它维护了一个观察者集合和一个发布新闻的通道。News 结构体包含新闻的标题和类型。在 main 函数中我们创建了新闻机构和两个订阅者将订阅者的兴趣注册到新闻机构并模拟了新闻发布。
http://www.hkea.cn/news/14399072/

相关文章:

  • 电商网站布局设计营销型wordpress模板
  • 如何高效的完成网站建设步骤手工制作大全简单
  • 托管网站是什么意思软件开发工具教材
  • 罗湖网站建前端开发软件哪个最好
  • 我的网站首页打不开用户体验网站
  • 吉林响应式网站价格曲阜网站设计
  • 电子商务网站建设预算网站建设培训 店
  • 网站设置访问密码python做一个简单的网页
  • 社交网站 用户互黏度一级造价工程师吧
  • 图片外链上传网站展台设计搭建
  • 申请一个网站wordpress做seo优化
  • 推销网站的方法开发电子商务系统的五个步骤
  • 网站可能存在什么问题吗网站图片浏览特效
  • 网站建设中长出现的问题网站建设公司倒闭
  • 长春做网站公司长春seo公司ppt模板怎么套用
  • 福州网站建设吧腾讯云网站建设教学视频
  • 门户网站运营门户网站免费建站
  • 深圳做小程序网站设计益阳做网站怎么便宜
  • 白银市建设局网站网站建设公司渠道
  • 富阳网站公司西安网站开发服务费用
  • 做国际网站多少钱wordpress 修改端口号
  • 用路由侠做网站西安做行业平台网站的公司
  • 影视自助建站系统源码网站的设计开发
  • 天津手机模板建站专业做家电经销的网站
  • 网站开发太简单了框架手机网站开发工具 2018
  • 做的好详情页网站怎么设计网页背景图片
  • 免费网站域名查询百度风云榜电视剧排行榜
  • 桐乡做网站江阴网络公司做网站
  • 房屋租赁网站开发模版国外大气网站欣赏
  • 单页网站上传教程c 手机网站开发工具