问题标签 [observer-pattern]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
2665 浏览

multithreading - Progress bar and multiple threads, decoupling GUI and logic - which design pattern would be the best?

I'm looking for a design pattern that would fit my application design.

My application processes large amounts of data and produces some graphs. Data processing (fetching from files, CPU intensive calculations) and graph operations (drawing, updating) are done in seperate threads.

Graph can be scrolled - in this case new data portions need to be processed. Because there can be several series on a graph, multiple threads can be spawned (two threads per serie, one for dataset update and one for graph update).

I don't want to create multiple progress bars. Instead, I'd like to have single progress bar that inform about global progress. At the moment I can think of MVC and Observer/Observable, but it's a little bit blurry :) Maybe somebody could point me in a right direction, thanks.

0 投票
11 回答
24326 浏览

c# - C#: events or an observer interface? Pros/cons?

I've got the following (simplified):

...and I'm conflicted. This is basically what I would have written in C++, but C# has events. Should I change the code to use events, or should I leave it alone?

What are the advantages or disadvantages of events over a traditional observer interface?

0 投票
8 回答
11474 浏览

java - 监视对集合的更改

假设您有以下 java bean:

您通常如何为集合实现属性更改事件?您是否尝试使用似乎更适用于数组而不是集合的 index 属性?

0 投票
2 回答
1828 浏览

events - 如何使用参数化名称收听所有 Seam 上下文事件?

Seam 将触发与特定范围、任务或流程相关的不同类型的事件,并将范围、任务或流程的名称附加到事件的末尾。

如何监听一个类型的所有事件?

例如,对于任何<name>我想听的事件,例如:

  • org.jboss.seam.createProcess.<name>— 创建进程时调用
  • org.jboss.seam.endProcess.<name>— 进程结束时调用
  • org.jboss.seam.initProcess.<name>— 当进程与对话相关联时调用
  • org.jboss.seam.startTask.<name>— 任务启动时调用
  • org.jboss.seam.endTask.<name>— 任务结束时调用

尽管事先不知道有效名称列表,但我需要这样做...... :-(

我希望使用@Observer 来创建观察者或类似的东西,并且我将在同一个组件中最多监听两个事件类。

0 投票
2 回答
4167 浏览

c# - WCF 中的调用是否同步?

我正在使用 WCF 编写一个应用程序,其中客户端订阅服务器,然后将更新推送回客户端。

订阅者使用在服务器上调用 Subscribe() 方法的 DuplexPipeChannel 订阅服务器。

服务器维护一个订阅者列表<>,当有数据要推送给订阅者时,它调用 PushData() 方法。

我的意图是遍历订阅者列表,依次调用每个订阅者的 push 方法。

我想知道的是:在我的订阅服务器上调用 push 方法是否阻塞?连接失败或连接到其中一个订阅者的延迟是否会导致其余的推送调用延迟(或更糟的是失败)?

如果这是一个明显的问题,我很抱歉,但到目前为止,我主要是一个 .Net 2.0 的人,所以我对 WCF 知之甚少。

我的 WCF 代码松散地基于本教程

另一个问题 假设它是同步的,我最好生成一个新线程来处理客户端请求,还是为每个“推送服务器端”生成一个新线程更好?

0 投票
5 回答
15000 浏览

ruby - 如何在 Ruby 中进行事件处理?

我来自 C# 背景,刚刚开始使用 Ruby 进行编程。问题是,我需要知道如何在我的类中引发事件,以便在需要发生事情时触发各种观察者。

问题是我所拥有的关于 Ruby 的书籍甚至都没有提到事件,更不用说提供示例了。有人可以帮助我吗?

0 投票
3 回答
1713 浏览

c++ - 用于 C++ 的 Python 的 PubSub/观察者模式?

我正在寻找 Python PubSub 库的 C++ 替代品,在该库中我不必将信号与插槽左右连接,而是可以注册一种特殊的消息,而不知道可以发送它的对象。

0 投票
12 回答
11697 浏览

ruby-on-rails - 在 rake 任务期间关闭观察者的简单方法?

我在我的应用程序中使用了 restful_authentication。我正在使用 rake 任务创建一组默认用户,但是每次我运行该任务时,都会发送一封激活电子邮件,因为观察者与我的用户模型相关联。我在创建用户时设置了激活字段,因此不需要激活。

任何人都知道在运行 rake 任务时绕过观察者的简单方法,以便在我保存用户时不会发送电子邮件?

谢谢。

0 投票
6 回答
991 浏览

c++ - 观察者模式中的 const-correct Notifier

我想实现一个不改变模型的模型类的观察者。因此,它应该能够使用 const-Reference 来访问模型。但观察员登记禁止这样做。

以下是我的项目中如何实现观察者模式:

非修改观察者需要“更改”模型的唯一地方是它想要注册它的时候。我觉得我无法避免 const_cast 这里,但我想知道是否有更好的解决方案。

旁注:换句话说,我不认为模型对象管理的“观察者列表”是模型状态的一部分。C++ 无法区分并将状态和观察者混为一谈,迫使两者都是 const 或 non-const。

干杯,菲利克斯

0 投票
3 回答
1627 浏览

c# - 创建更新列表时触发的事件

我有一个包含通用 List 对象的静态类(DataFormSubject),如下所示:

依赖这个列表的其他类需要在列表更新时被告知,所以我创建了一个自定义事件,以及可以在添加或删除项目时触发的关联方法,如下所示:

List 可通过属性从静态类获得,如下所示:

但是这里的问题是客户端现在可以通过访问属性并直接添加或删除类来绕过更新事件!例如

我该如何防止这种情况,或者有没有更好的方法来实现我想要的?理想情况下,我想要的是观察者可以订阅的 List 类上的更新事件!