[英]Communication between a widget, a service, and the model (singleton) of an application (MVC like architecture)
我遇到了一个复杂的问题,涉及应用程序的许多不同组件。 我希望足够清楚。
在我的应用程序中,应用程序 object,一个 singleton,为许多活动提供了一个 model(也是单例)。 主要活动,向用户呈现一个定时数据列表。 这些数据来自 model。
我还有一个小部件,我希望它: - 当定时数据从 model (通过 GUI)更新时更新 - 随着时间的推移,更新为仅显示列表的 2 个第一个定时数据,删除那些现在已经过时了。
为了达到第二个目标,我设计了一个服务,它要求 model 获取一些数据,并在第一个数据过期后使用计时器唤醒,然后将其从列表中删除,然后向小部件发送一个带有一些意图数据的广播,即小部件将显示。
这工作正常。
但我也希望小部件在 model 中的数据更改后立即更新(不是因为时间流逝,而是因为用户通过 GUI 要求其他一些数据)。
但是,这是我的问题:
model 如何告诉小部件更新? 服务已准备好更新小部件,但引擎无法知道是否有小部件。 我不希望 model 调用该服务,因为可能没有小部件并且不需要为该服务添加额外的进程。
如何优雅地重新设计这种交互?
我真的在这里错过了一些东西。
您可以使用观察者模式让引擎在任何事情发生更新时向应用程序中感兴趣的任何组件触发事件,而无需事件产生组件对事件消费者有任何真正的了解。
作为参数发送的事件 object 应包含有关 UI 小部件更新自身的事件的所有相关信息等,因此只需要传递这个抽象的“事件”object - 而且您的层不会渗入每个层其他。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.