observer-pattern 相关问题

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

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

我刚刚仔细研究了观察者模式。我编写了一个演示片段以更好地理解它。 但是我刚完成 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

C# 可从 Func 委托观察

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

回答 1 投票 0

关于如何初始化弱结构体字段的语法问题<dyn T + Send + Sync>

目标 我正在为结构发布者开发订阅者/发布者模式。所以观察者是 特征事件观察者{ fn update_info(&self, info: 信息) -> 结果<(), Err...

回答 1 投票 0

为什么删除或更改项目状态后无法加载新列表?

我使用 paging3 libary 从分页的 api 获取数据。我得到它并在 onViewCreated 中成功加载。但是当使用时从列表中删除 api 项目。它无法将新列表加载到适配器。当我重新创建时

回答 1 投票 0

使用 React 的 onClick 事件来集成分析

我们想要跟踪 React 应用程序中的用户导航 - 单击按钮、表单填写、页面导航。 我们不想要的 - 使用自定义分析代码污染每个 onClick 等处理程序。 有反应吗

回答 1 投票 0

谁应该负责将观察者添加到事件中

我需要链接Portal、WaveManager和TimeManager这三个类,以便当Portal中满足条件时,执行TimeManager.SlowTime()和WaveManager.SpeedUpSpawn()。事件似乎...

回答 1 投票 0

使用 Node EventEmitter,如何从服务列表中删除对象,同时取消订阅服务的事件调度?

我正在研究Node.js的EventEmitter。我正在尝试创建一家面包店,如果顾客在烘烤面包时有钱,他们会自动购买面包。不过,我还想创建一个列表

回答 1 投票 0

如何使用 Node EventEmitter 移除监听事件的对象

我正在研究 Node.js 的 EventEmitter,我正在尝试创建一个面包店,当它烤面包时,如果顾客有钱,他们会自动购买面包,但我也想创建一个...

回答 1 投票 0

如何在子组件Angular中使用observable通知父组件?

有这个父组件'SalesListComponent' 总销售量:R${{totalCashierDay}} 有这个父组件'SalesListComponent' <div class="container"> <div> <h3>Total Venda: R${{totalCashierDay}}</h3> <div *ngFor="let sale of salesListAggrouped" class="saleCard"> <app-modal-receipt [sales]="sale"></app-modal-receipt> </div> </div> </div> 它渲染了许多我在多个地方使用的子组件“ModalReceiptComponent”。 可视化(红色:父组件,绿色:子组件) 我正在尝试学习观察者并使用这种方法 export class HubService { sales_list: sales[] = []; constructor() { this.sales_list = getCachedSales(); } getSales() { const sales = of(this.sales_list); return sales; } addSale(sale: sales) { this.sales_list.push(sale); saveCacheSales(this.sales_list); } addSales(sale: sales[]) { this.sales_list = this.sales_list.concat(sale); saveCacheSales(this.sales_list); } editSales(sales: sales[]){ this.sales_list = sales; saveCacheSales(this.sales_list); } deleteSales(sales: sales[]){ this.sales_list = this.sales_list.filter(x => x.idDate !== sales?.[0]?.idDate); this.editSales(this.sales_list); } 使用“of”观察者方法处理销售列表中的 CRUD 的服务。 在'sales-list-component.ts'中只需订阅构造函数中的道具列表 export class SalesListComponent { salesList: sales[] = []; constructor(public dialog: MatDialog, private hubService: HubService) { this.hubService.getSales().subscribe(sales => { this.salesList = sales; }); } 在'modal-receipt-component.ts'中我在点击事件中使用了删除方法 deleteSales(){ this.hubService.deleteSales(this.sales); window.location.reload(); } } 问题是,在不重新加载整个页面的情况下,我无法识别 salesList 更新的事件和“重新渲染”父组件以更新新的 salesList 而无需删除记录。 有人可以帮助我吗? 到目前为止,只有 window.location.reload() 已经解决。 首先在父级中为构造函数中的代码创建一个新方法并在constructor上调用它,然后移动删除销售 export class SalesListComponent { salesList: sales[] = []; refreshSales() { this.hubService.getSales().subscribe(sales => { this.salesList = sales; }); } constructor(public dialog: MatDialog, private hubService: HubService) { this.refreshSales(); } deleteSales(sales: any){ this.hubService.deleteSales(sales); this.refreshSales(); } } } 然后你需要做一个事件发射器并从 html 触发事件 总销售量:R${{totalCashierDay}} <div *ngFor="let sale of salesListAggrouped" class="saleCard"> <app-modal-receipt [sales]="sale" (deleteEmitter)="deleteSales($event)></app-modal-receipt> </div> </div> 在子组件中,您需要触发发射器。 @Output() deleteEmitter: EventEmitter<any> = new EventEmitter<void>(); deleteSales(){ this.deleteEmitter.emit(this.sales); } }

回答 1 投票 0

oop 中的推式和拉式通信方式:为什么推式方式不灵活?

我正在尝试学习观察者设计模式,并开始观看属于codewithmosh的系列,名为“终极设计模式系列”。 在关于 Obse 的课程中...

回答 1 投票 0

在 UML 中建模 Gof 观察者模式

我正在对我的项目进行建模,随后我将利用 UML 在 Java 中实现该项目。我的项目的重点是健身房的管理。目前,我正在为我的 GoF 建模

回答 1 投票 0

非父子React组件之间如何共享数据?

在子父关系中的组件之间共享数据的过程在 React 文档中有详细记录并直接处理。不太明显的是 h...

回答 2 投票 0

为什么 Observable 对象在 Swift 中在更改发生之前而不是之后通知观察者?

新的 Observation 功能附带了 withObservationTracking(_ apply:onChange:) ,当修改 apply 闭包中访问的任何属性时,它会执行 onChange 闭包。然而,onCh...

回答 1 投票 0

Java 客户端-服务器和观察者

我正在为一项大学任务实现一个Java客户端-服务器应用程序,但我陷入了以下困境:我必须使用客户端-服务器,并且每当数据中的数据时更新视图...

回答 1 投票 0

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