【发布时间】:2013-03-27 11:09:41
【问题描述】:
在上一篇文章中,我使用了观察者模式。说明 -
class Flight 有一个状态(即 int)——在时间之前、准时、迟到。这是我的 Observable 类 FlightStatusMonitor 有一个航班的 ArrayList。这个班级是我的观察者。这样的观察者只有一个。 update(Observable o, Object arg) 方法会更新航班的状态,同时也会显示它观察到的所有航班的刷新后的航班状态。
我正在考虑使用计时器任务来更改所选时间的航班状态,然后查看所有航班的更新状态。
我希望能够在由计时器任务更改后立即看到屏幕上显示的航班状态。
但是,我不确定我这样做是否正确。并发在这里会是个问题吗?
更新 我有一组航班,我将分批更改其状态。批量大小可以是 1 个航班或更多 - 1、5、15、22、45 等,但绝不是所有航班。我更改了一批的状态,几秒钟后我更改了另一批的状态等。一些航班保持不变。
【问题讨论】:
-
如果你要同时改变所有个航班的状态,观察者模式是没用的。您不妨在监视器中放置一个计时器,并在它触发时检查所有航班。
-
@Heuster - 我有一组航班的状态分批更改。批量大小可以是 1 个航班或更多 - 1 、 5 、 15 、22 、 45 等,但绝不是所有航班。我更改了一批的状态,几秒钟后我更改了另一批的状态等。一些航班保持不变。观察者模式适用于这个用例吗?
-
是的,那就太好了。如果更改的数量明显小于航班总数,则观察者模式将获得回报。此外,您可能希望批量缓存更改并一次更新它们(当航班通知更改时,请稍等片刻 - 例如一秒钟 - 并将在该时间间隔内到达的所有通知添加到同一批次中。然后,一次更新整个批次的屏幕。)
标签: java design-patterns timer observer-pattern timertask