这里只是一种简单而粗糙的想法

既是界面与数据分离。我们都知道,数据的变化经常是没有时间限制的,他可以更新得很快,也可以更新得很慢。

然而我们人眼在界面上所能看到的数据,却是有一个固定频率的,如果界面内容变化过快,对于人来说,是无意义的。

比如说,界面上有一个列表,显示着其他设备发来的数据。一种方法是一接到数据就往屏幕上刷新,这样,如果数据是更新很频繁的,比如这一毫秒是1,下一毫秒是2。这样的更新,是很无意义的,因为数据在人眼,只是飘一下就没了。而且,太快的变化,使人眼根本无法看清数字。

另一种方法是在更改积攒到一定程度时才显示,这样,会使数据可能滞留太久。

而另一种,则是在处理数据时,完全假设界面是不存在的,只管更新数据。

然后界面则保持一定频率去获取数据,然后跟已经显示出来的数据比较,如果不同则将其修改。我认为,这样的逻辑,比较简单地达成了界面与内部数据的分离。而且,可以根据不同的需求,来设定不同的刷新率。如果是图像显示,可以用33ms刷一次,且使用双缓存。而文本显示,频率可以更低,甚至是500ms才刷一次,都可以反映出内部状况。

而界面,也是一种数据源,比如我们的输入,等等,不同界面的切换,我相信,使用这个思路也会使逻辑与界面分离。我们的输入都当成提交给后台,后台更新数据。自然,界面刷新时,就会将数据显示出来。

有时,也有人会说,操作频率很低,比如每10分钟数据才会更新一次,使用这种方法,那不是很浪费。而我想说的是,为10分钟才会动一次数据,且33ms才会运算一次的程序,去优化,使其复杂度极度上升,会不会太不值得了?

这个思路完全来源于多媒体游戏,在游戏世界里,我们是多么流畅地感受所有的一切。

噢,好像还有一个词,那就是日志。日志这也是一种数据形式,同样是一种显示形式。将数据比喻成是自然风景的话,界面就如一张快照,而日志则是一段影片。它是数据在一段时间内的变化序列。反应到界面,他们就像是示波器一样,反应每一时刻捕获的数据。如果是数据,可以使用类似示波器一样的波形来显示。

就如我们系统上的cpu使用记录一样。我们可以感性地知道cpu到底被使用得多频繁。