簡體   English   中英

小部件、服務和應用程序(類似 MVC 的架構)的 model(單例)之間的通信

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM