观察者模式和事件的不同之处

假如有A窗体,有一个计时器

B窗体,也有一个计时器。

要求B窗体的计时器和A窗体同步。

A窗体是主界面,B窗体是子界面

方案1:要使得B窗体和A窗体保持同步的计时器,那么在启动B窗体的时候,可以将A窗体的计时器的间隔作为B窗体的构造函数的参数传递

或者将A窗体的间隔保存到文件中,在B窗体加载之后,从配置中读取

然后,在A窗体改变计时器的间隔时,通过事件的方式通知B窗体。

方案2:可以实现观察者模式,在实例化B窗体的时候,直接通过观察者模式将间隔传递过去。并且在改变A窗体计时器间隔的时候,通过OnNext方法通知所有的观察者,计时器采集间隔发生变化。

时间: 2024-10-11 18:21:27

观察者模式和事件的不同之处的相关文章

java设计模式--观察者模式和事件监听器模式

文章转载于:http://www.java2000.net/p9452 复习设计模式,看到observer观察者模式,说法是该模式和iterator迭代器模式类似已经被整合进jdk,但是jdk提供了两种接口: 一.java.util.Observer -- 观察者接口 对应: java.util.Observable --受查者根类 二.java.util.EventListener -- 事件监听/处理接口 对应: java.util.EventObject -- 事件(状态)对象根类 研究了

班主任来啦之观察者模式,事件委托等Java实现---如果你还不懂,看完此文,就一定会懂

班主任来啦! 小A对小B说:"今天真是笑死人了,我们班一位同学在仔细的时候看NBA球赛,被班主任抓了个正着.班主任脸都绿了,哈哈,真是笑死我了. 小B说:"啊,你们怎么同学怎么敢在课上看电视啊?" 小A说:"没有的,他们那帮子男生经常自习的时候看球赛的.我们班有个女生坐在前排,那些男生就给她送写小礼物啊什么的.班主任来了,那个女生就去通知敲一下桌子." 小B说:"好吧.这也行.那今天怎么会有人被抓?" 小A说:"这是因为刚好班

《大话设计模式》——读后感 (6)老板回来了,我不知道?——观察者模式之事件委托(2)

什么都不说,直接上代码,自己去理解,要结合动态代理看 Event: package com.sjmx.observer.application; import java.lang.reflect.Method; public class Event { private Object object; private String methodName; private Object[] params; private Class[] paramTypes; public Event(Object

观察者模式与事件监听机制

一.观察者模式 1.1 概述 有时被称作发布/订阅模式,观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象.这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己.它类似B/S架构模式,构建一个服务端,多个客户端显示.其实这个主题对象就像是一个信息源,当信息源的状态发送变化时,它会通知所有订阅者,使它们进行相应的处理.在百度百科中的例子是,用户界面可以作为一个观察者,业务数据是被观察者,用户界面观察业务数据的变化,发现数据变化后,就显示在界面上. 1

观察者模式 -> dom事件 / 自定义事件 / Promise 我的理解

观察者模式(Observer) 又称作为发布-订阅模式或消息机制,定义了一种依赖关系,解决了主体对象与观察者对象之间通讯和耦合的问题; 观察者模式例子 引用于<JavaScript设计模式> var Observer = (function(){ var _messages = {}; // 监听信息容器 return { /** * 注册监听信息接口 * @param {String} type 监听信息类型 * @param {Function} fn 对应的回调函数 */ regist:

观察者模式与事件委托

情景 平时很多人都会用新浪微博, 关注女神动态, 女神就是通知者,也叫主题, 而关注女神的这些人,就是观察者,也叫订阅者, 既然订阅了女神的动态, 如果女神有新的动态, 我们就会想通过某一个渠道被通知, 这种交互方式就是观察者模式 常见的使用场景; spring中的event, listener等都是观察者模式 代码实现 /** * 通知者, 也是主题发布者, 就是为了被观察或者订阅的, * 主题如果状态发生改变,就会通知所有的订阅者(观察者) */ public interface Subje

观察者模式和事件监听模式的区别

事件监听模式更像是观察者模式的进阶. 观察者模式中,'主题'会在特定逻辑下通知所有'观察者'.如果这个通知不包含任何信息,那么这种实现就是通常的观察者模式. 如果'主题'通知'观察者'的过程带有一些<其他信息>.那么'主题'本身已经上升成为了'事件源',而通知中带有的<其他信息>经过封装就成为了事件. 事件监听模式的优势:在很多应用场景中,通知中附带的<其他信息>是必不可少的,事件Event则对这些<信息>进行了封装,使它本身拥有了多态的特性.每个事件对象就

观察者模式(自定义事件)

开篇导读:在js中接触了内置的事件监听器,比如我们绑定了按钮的一个点击事件及赋予它一个事件处理函数,当点击按钮时便触发了这个内置监听器也就是onclick,于是开始执行我们赋予它的处理函数,由此我们会想到这种事件监听器我们自己可不可以定义呢?其实我们可以模拟内置事件的监听和触发过程,以此来达到我们需要的效果,在行业领域当中,它被称为观察者模式,直接上实现代码 //定义一个对象 let ObserverMode = { //定义添加自定义事件 on: function(){ // 判断参数是否满足

游戏编程模式--观察者模式

观察者模式 定义:在对象间定义一种一对多的关系,以便在某对象发生改变时,与它存在依赖关系的所有对象都能收到通知并自动进行更新. 观察者模式的使用非常的广泛,我们熟知的MVC框架的底层就是观察者模式,java甚至直接把它集成到系统库中(java.util.Observer),c#更是直接将它集成在了语言层面(event关键字). 解锁成就系统 在现代的游戏中通常都会有一个成就系统,当你完成某个任务的时候,会解锁相应的成就.例如:“杀死100个恶魔”,“从桥上掉下”等.但要实现这么一个优雅的成就系统