小部件,服务和应用程序类似于MVC的体系结构的模型单例之间的通信

问题描述

我遇到了一个涉及应用程序许多不同组件的复杂问题。我希望足够清楚。 在我的应用程序中,应用程序对象(单例)为许多活动提供了一个模型(也是单例)。主要活动是向用户显示定时数据列表。这些数据来自模型。 我也有一个小部件,我希望它: -在模型中(通过GUI)更新定时数据时更新 -随着时间的流逝,更新为仅显示列表中的前两个定时数据,删除现在已过时的数据。 为了达到第二个目标,我设计了一项服务,要求模型获取一些数据,并使用计时器在第一个数据过期后唤醒,然后将其从列表中删除,然后向意图有一些数据的小部件发送广播,即小部件将显示。 这很好。 但是我还希望窗口小部件在模型中的数据更改时立即更新(不是因为时间过去了,而是因为用户通过GUI要求其他一些数据)。 但是,这是我的问题: 模型如何告诉小部件进行更新?一切就绪,服务可以更新小部件,但是引擎无法知道是否有小部件。我不希望模型调用该服务,因为可能没有小部件,也不需要为该服务进行其他处理。 如何重新设计这种互动? 我真的很想念这里的东西。     

解决方法

        您可以使用Observer模式,使引擎在应用程序更新时向应用程序中感兴趣的任何组件触发事件,而事件产生组件却不了解事件消费者。 作为参数发送的Event对象应包含有关该事件的所有相关信息,以便UI小部件自行更新等,以便仅需要传递此抽象的“ event \”对象-并且您的图层不会出血彼此。     

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...