我正在使用 MVC
模式,该模式也使用 Observer
模式。概念如下:
________ _________ ______________
| VIEW | -- observes --> | MODEL | <-- changes -- | CONTROLLER |
-------- --------- --------------
所以我认为我的概念非常常见。每次从Model
中观察到的对象发生更改时,View
都会进行重新创建更新。就我而言,我有很多对象非常频繁地更改,这对用户界面的性能产生了不良影响。由于对象及其呈现方式可能存在多种变化,我总是必须在更新时重新创建整个View
,而不是更新特定组件。为了提高性能,我实现了一个更新 View 请求队列,以确保更新仅完成,例如最大限度。每 50 毫秒一次。这非常有效,并将性能提高到了一个很好的水平。
我现在的问题是,是否有更好的方法来处理许多暂时相互重叠的更新 View 请求。在我看来,我的解决方案是将请求排队并减少到可接受的水平,这似乎是一个糟糕的解决方法。有更好的概念吗?
最佳答案
您在图表中描绘的模式并不完全是 MVC,而是 MVVM(模型、 View 、ViewModel)。
使用队列来限制更改是一种完全有效的方法。在许多情况下,试图以比用户感知的速度更快的速度更新 View 是没有用的。
另一方面,与其每次都创建新的 View 对象可能会很昂贵。您可以应用的另一个技巧是拥有一个可变 View 部件池,根据需要,将它们重新绑定(bind)到某些模型实体,并根据需要显示或隐藏它们。根据您的具体用例,这还可以帮助您提高全局性能。
关于java - MVC 与观察者模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22832870/