带观察者模式的MVC

时间:2014-04-03 09:09:28

标签: java model-view-controller observer-pattern

我正在使用MVC模式,该模式也使用Observer模式。这个概念如下:

________                 _________                ______________
| VIEW | -- observes --> | MODEL | <-- changes -- | CONTROLLER | 
--------                 ---------                --------------

所以我认为我的概念非常平常和常见。每次Model中观察到的对象发生更改时,View都会更新。在我的情况下,我有很多对象频繁更改,这对用户界面的性能有不良影响。由于对象的广泛可能的更改以及呈现它们的方式,我总是必须在更新时新创建整个View而不是更新特定组件。为了提高性能,我为更新视图请求实现了一个队列以确保更新,例如,仅进行更新。最大。每50毫秒。这完美地工作,并将性能提升到一个良好的水平。

现在我的问题是,是否有更好的方法来处理许多更新视图请求,这些请求在时间上相互重叠。我的排队和将请求降低到可接受水平的解决方案在我看来似乎是一个糟糕的解决方法。有关更好概念的任何想法吗?

1 个答案:

答案 0 :(得分:1)

您在图中描绘的模式不完全是MVC,而是MVVM(模型,视图,ViewModel)。
使用队列来限制更改是一种非常有效的方法。在许多情况下,尝试以比用户能够感知的更快的速度更新视图是没有用的。

另一方面,不是每次创建新的View对象都是昂贵的。您可以应用的另一个技巧是根据需求创建一个可变视图部件池,将它们重新绑定到某些模型实体,并根据需要显示或隐藏它们。根据您的具体使用案例,这也可以帮助您改善全球表现。