observer-pattern 相关问题

一种设计模式,其中一个称为主体的对象维护其依赖项列表,称为观察者,并通常通过调用其中一种方法自动通知它们任何状态更改。它是四人帮的行为设计模式之一。在实现繁重的问题上使用此标记时 - 标记实现编写的代码语言。

观察者模式中Subject接口的访问限制

在这个观察者模式中,我还使用了一个东西:推拉机制, 所以观察者也有对主体的参考。 所以现在当主体是观察者本身的一部分时

回答 1 投票 0

使用观察者模式两次实现主题时使用了错误的观察者列表

我在 C++ 中实现了一个简单的观察者模式,如下所示: 模板 类观察者{ 私人的: 虚拟无效通知(const T&数据)= 0; 民众: 虚拟 ~Observer() =

回答 1 投票 0

是否应该在单独的线程中通知每个观察者?

我知道这听起来很沉重,但我正在尝试解决一个假设的情况。假设您有某个对象的 N 个观察者。每个人都对对象状态感兴趣。应用观察者 Pa 时...

回答 4 投票 0

观察者模式:隐藏非发布者类的更新方法

上下文 我正在编写一个简单的模拟库,其中包括实体和事件类。 我决定实现观察者模式,以便一旦模拟事件(发布者),它就无法...

回答 1 投票 0

Java 事件系统/观察者模式

我已经研究了 Java 中观察者模式的许多实现,但它们似乎都没有完全按照我想要的方式运行。 在我熟悉的编程语言中,可以...

回答 3 投票 0

观察者模式与中介者模式

我做了一些谷歌搜索,是的,我知道关于这两者之间区别的问题之前已经在 stackoverflow 和整个网络上被问过。但我大多找到的是措辞明确的答案,这可能是

回答 2 投票 0

如何通过自动测试检查对象是否导致内存泄漏?

我有一个对象,它具有与事件订阅相关的内部逻辑。 我想编写一个自动测试,检查对象是否可以在某些步骤后被 GC 收集。 例如: 公开

回答 1 投票 0

如何调用 StateHasChanged() 或从 .net Blazor .RAZOR 页面中实现的接口更新我的 UI?

我有一个 Blazor 服务器应用程序。通过这个应用程序,我正在与 MistralAI“交谈”。此 REST API 端点有一个您可以设置的流令牌,该令牌将允许其“流式传输”

回答 1 投票 0

stateFlow 值发生变化,但订阅者不会收到通知

我使用koin和jetpack进行创作。当我更新 stateFlow 值时,订阅者不会收到通知,并且可组合函数中没有重组。 视图模型中的部分代码: 私人价值

回答 1 投票 0

有没有办法在 C++ 中“扩展”枚举以进行“类型切换”?

对于一个项目,我需要一个观察者类(由一个主题拥有,然后通知其所有观察者)来处理其他行为。 这些观察者通过调用其 onNotify(Event*) 方法来工作

回答 1 投票 0

magento $order->getAllItems() 返回相同项目的两次

我正在编写一个观察者来检查订单中的每个项目,在某个时候我会得到这些项目 foreach($order->getAllItems() as $item){ //做一点事 回声 $item->getSku(); } //输出...

回答 3 投票 0

在 magento 中创建新发票时的事件名称是什么?

当您在管理面板中创建发票时,观察者的该事件的名称是什么?我尝试过 sales_order_invoice_register 和 sales_order_invoice_pay 但不起作用。

回答 1 投票 0

在 magento 中创建新发票时的事件名称是什么?

当您在管理面板中创建发票时,观察者的该事件的名称是什么?我尝试过 sales_order_invoice_register 和 sales_order_invoice_pay 但不起作用。

回答 1 投票 0

关于观察者模式的问题。观察者需要来自两个或多个来源的信息怎么样

我刚刚仔细研究了观察者模式。我编写了一个演示片段以更好地理解它。 但是我刚完成 demo 后,出现了一个问题,观察者模式是在一个可观察的之间

回答 1 投票 0

Python观察者模式:调用notify_observers方法时出现AttributeError

我尝试在Python中使用观察者设计模式,但是在调用Observable类中定义的notify_observers方法时出现错误 可观察类: def __init__(自身): ...

回答 1 投票 0

.NET Rx C# Observable.FromEventPattern 不运行 OnCompleted

我不明白为什么下面的代码无法运行OnCompleted,任何人都可以帮助我,谢谢。 基本上我所做的是每次按下一个键,我都会触发一个事件并进行转换...

回答 1 投票 0

带有Map<Class<? extends Event>、List<EventListener<? extends Event>>的EventSource,没有未经检查的调用

我需要使用每个事件类的侦听器列表来实现观察者模式。 我有: 空接口事件 公共接口事件{} 监听器接口: 公共接口事件监听器 我需要使用每个事件类的侦听器列表来实现观察者模式。 我有: 空界面事件 public interface Event {} 听众界面: public interface EventListener<T extends Event> { void handle(T event); Class<T> getEventClass();} 以及事件来源: public class EventSource { private final Map<Class<? extends Event>, List<EventListener<? extends Event>>> listeners = new HashMap<>(); public <T> void subscribe(EventListener<? extends Event> listener) { Class<? extends Event> eventClass = listener.getEventClass(); if (!listeners.containsKey(eventClass)) { listeners.put(eventClass, new ArrayList<>()); } listeners.get(eventClass).add(listener); } public void unsubscribe(EventListener listener) { listeners.remove(listener.getEventClass()); } public void fire(Event event) { for (EventListener listener : listeners.get(event.getClass())) { listener.handle(event); //<-- Unchecked call to 'handle(T)' as a member of raw type... } }} 它有效,但我有“未经检查的呼叫”警告。如何避免? 我尝试过: public void fire(Event event) { for (EventListener<? extends Event> listener : listeners.get(event.getClass())) { listener.handle(event);//<-- compilation error } } 但在这种情况下,我有“句柄无法应用于...”编译错误。 提前致谢! 报告“未经检查的呼叫”警告是有充分理由的 - 您使用了 EventListener 的原始形式。当您给出类型参数 ? extends Event 时,它会给出编译错误,因为编译器不知道 Event 处理哪个 EventListener - 它只知道它是 Event 的特定类型。同样,它不知道 event 的运行时类型 - 它可能是 Event 的任何特定类型。 必须知道类型才能有意义。我会将 EventSource 设为泛型,用有界泛型类型参数指定 Event 的类型。 class EventSource<E extends Event> { 许多 ? extends Event 声明将更改为使用 E,例如 private final Map<Class<? extends Event>, List<EventListener<E>>> listeners = new HashMap<>(); 还有许多其他声明将更改为使用 E。 现在,fire将获取E,以便将其传递给handle: public void fire(E event) { for (EventListener<E> listener : listeners.get(event.getClass())) { listener.handle(event); // Now this compiles } } 改变 listeners.put(eventClass, new ArrayList<>()); 到 listeners.put(eventClass, new ArrayList<EventListener<? extends Event>>()); 我相信这将使接口方法 handle 表现得像预期的那样

回答 2 投票 0

如何触发事件刷新多个.net api的配置

我们有超过 100 多个 .net API,其配置是从 gitlab 配置中获取的。每当有人更新配置时,我们都会同步镜像并重新启动服务。 我们有一个要求......

回答 1 投票 0

如何通过 Weak::new() 创建 Weak<dyn T>?

我正在研究一个如下所示的发布/订阅模型: 特征 EventObserver { ... } 结构发布者{ 观察者:互斥体>, } 如何初始化...

回答 1 投票 0

可从 Func 委托观察

是否有方法或库函数可以接受 Func 并通过调用它返回 IObservable? 功能应该可能等于 公共 IObservable 创建...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.