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

哪个行业必须做网站网站排名诊断

哪个行业必须做网站,网站排名诊断,天津大学新校区建设网站,电子商务网站开发 当当网什么是观察者模式? 观察者模式(又被称为发布-订阅(Publish/Subscribe)模式,属于行为型模式的一种,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态…

什么是观察者模式?

观察者模式(又被称为发布-订阅(Publish/Subscribe)模式,属于行为型模式的一种,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态变化时,会通知所有的观察者对象,使他们能够自动更新自己。

观察者模式的角色:

Subject:抽象主题(被观察者),每一个主题可以有多个观察者,并将所有观察者对象的引用保存在一个集合里,被观察者提供一个接口,可以增加和删除观察者角色

ConcreteSubject:具体主题,将有关状态存入具体观察者对象,在主题发生改变时,给所有的观察者发出通知

Observer:抽象观察者,为所有的具体观察者定义一个更新接口,该接口的作用是在收到主题的通知时能够及时的更新自己

ConcreteObserver:具体观察者,实现抽象观察者角色定义的更新接口,以便使本身的状态与主题状态相协调。如果需要,具体观察者角色可以保存一个指向具体主题角色的引用。

参考来自设计模式(五)观察者模式,作者:刘望舒

观察者模式的使用场景:

观察者模式是一种对象行为型模式,它通常用于以下场景:

  • 消息服务器系统。
  • 社交媒体平台。
  • 邮件系统。
  • 图形界面应用程序。
  • 游戏。
  • 实现团队协作,提高工作效率。
  • 观察者模式可以在不同对象之间创建有效关系,从而更有效地开发高质量软件。

具体实现:

假设有这么一个场景:我是B站up主,有很多粉丝关注我,我发视频了,他们就会点赞我,我发癫了(说些不好的话)他们就会取关我。
在这种场景下,就很使用观察者模式,粉丝们关注我,根据我的状态而动态地做出反应。

观察者的接口

public interface MyObserver {void execute(String upName);
}

观察者对象

public class fans implements MyObserver {private String name;public fans(String name){this.name = name;}// 根据msg动态地执行方法@Overridepublic void execute(String msg) {if("更新了".equals(msg)){System.out.println(this.name+"点赞了你");}if("发癫了".equals(msg)){System.out.println(this.name+"举报了你");}}
}

被观察者接口

public interface SupObject {// 将粉丝增加在通知列表void add(MyObserver myObserver);// 将粉丝删除出通知列表void delete(MyObserver myObserver);// 通知void notify(String upName);
}

被观察者对象

public class up implements SupObject{List<MyObserver> notifyList = new ArrayList<>();@Overridepublic void add(MyObserver myObserver) {notifyList.add(myObserver);}@Overridepublic void delete(MyObserver myObserver) {notifyList.remove(myObserver);}@Overridepublic void notify(String msg) {notifyList.forEach(t-> t.execute(msg));}
}

执行器

public class client {public static void main(String[] args) {fans fans1 = new fans("小约翰可汗");fans fans2 = new fans("CSGO玩机器");fans fans3 = new fans("徐云流浪中国");up up = new up();up.add(fans1);up.add(fans2);up.add(fans3);up.notify("更新了");}
}

效果:

在这里插入图片描述

观察者模式的优缺点:

优点

解除耦合,让耦合的双方都依赖于抽象,从而使得各自的变换都不会影响另一边的变换。

缺点

在应用观察者模式时需要考虑一下开发效率和运行效率的问题,程序中包括一个被观察者、多个观察者,开发、调试等内容会比较复杂,而且在Java中消息的通知一般是顺序执行,那么一个观察者卡顿,会影响整体的执行效率,在这种情况下,一般会采用异步实现。

观察者模式和发布订阅模式的不同:

通过上面的代码,可能回产生这样的疑问?
这不是“被观察者”主动发送消息给“观察者”的吗?这么叫做观察者模式呢?主被动关系是不是搞反了?
其实观察者模式也叫做发布订阅模式。
比如《heah in first》中,就曾这么写

Publishers + Subscribers = Observer Pattern
在这里插入图片描述

但是!他们还是有差别的
在发布订阅模式里,发布者,并不会直接通知订阅者,换句话说,发布者和订阅者,彼此互不相识。
但在观察者模式中,观察者与被观察者是直接通信的。
这就是他们的差别:
观察者模式主打一个松耦合,但是他们还是耦合的。
但是发布订阅模式,完完全全的松开了!

http://www.lakalapos1.cn/news/623/

相关文章:

  • 网站建设这门课可以分4天做任务的网站
  • 营销型网站建立广告优化是做什么的
  • 兰州专业网站建设公司上海网站设
  • 永仁网站建设做期货关注什么网站
  • 网站建设 豫icp备网站建设公司做的网站
  • 建设网站设计论文范文做网站的域名多少钱
  • 有美元进账去外管局网站做啥章贡网站建设
  • 做网站有2个前提条件_一个是网站化学试剂网站建设
  • 小学网站建设实施方案个人养老金制度相关细则
  • 域名服务商网站企业网站建设排名资讯
  • 网站建设费 账务处理网站流量分析怎么做
  • 全球建筑设计网站平板电脑可以做网站吗
  • 重庆市建设工程造价管理总网站怎么做门淘宝网站
  • 网站空间在哪里买网站建设的原则有哪些内容
  • 电子商务网站建设和推广 范文wordpress 摄影 主题
  • 广州海珠网站开发价格搜搜提交网站
  • 建设校园标准信息服务网站论文年利润三十万小作坊
  • 广州网站建设教程asp网站怎么改成中英双语
  • ueditor是做网站的吗域名防红跳转网址生成
  • 上海部道网站 建设安徽网络建站
  • 制作京东一样的网站网站建设公司面临的问题
  • h5做的网站有哪些微信公众平台怎么做微网站吗
  • 做内贸的网站淘宝网建设网站意义
  • 河南专业网站建设公司哪家好如何在建设教育协会网站注册考试
  • 进网站后台加什么个人网站用备案吗
  • 做网站分几种电商网站设计周志
  • 裕华建设集团网站小企业门户网站建设
  • 网站描述样本h5页面制作软件教程
  • 建销售网站需要多少钱网站建设首页模板
  • 百度建网站多少钱公司公众网站微信平台建设方案