设计模式:预览命令模式效果

3
有哪些现有的模式可以预览命令模式对模型的影响,且在连续更改命令的情况下保持可接受的性能(即传统WIMP GUI中没有延迟)?例如,在每次接收到鼠标事件时实际化命令的情况下。 原帖: 我们正在设计和原型制作多媒体编辑软件,我们面临一个问题:我们使用命令模式进行撤销-重做,但我们找不到一种看起来有效的方式,在用户更改GUI中的内容时提供实时反馈。 例如,假设您有一个包含一些数据的框,可以调整大小。然而,调整框的大小可能意味着不仅仅是简单的图像缩放:更大的框可能意味着内部出现新元素。但在请求框模型执行其大小的有效更改之前,这是无法知道的,因为它将进而调用其基础组件的更新。 在这种情况下,我们如何创建一个“流畅”的用户界面,使用户可以调整框的大小并实时查看其内部如何变化,只应用一个命令就可以实现?

1
你想在你的命令设计模式中以一个命令动态地进行多次放大/缩小试验吗?如果是这样,或许你可以为一个命令指定一个"活动超时时间"。 - László Papp
其他软件(比如Photoshop)中是否有类似的超时功能? - Jean-Michaël Celerier
1
我有两个想法,从效率的角度来看都相当糟糕:
  1. 创建一个命令,将下一个命令合并到当前命令中,并在每次执行时进行撤销和应用,这样执行“撤销”操作就可以恢复到原始状态。
  2. 复制模型,并临时将演示者插入到副本中,以查看更改的效果,并在每次移动时重新复制。
- Jean-Michaël Celerier
你是什么意思?也许我没有理解这个问题。 - László Papp
我修改了问题,希望能使其更加清晰明了。 - Jean-Michaël Celerier
显示剩余3条评论
1个回答

0

编辑(2015-09-05):我在书籍《面向图形的面向对象编程》(http://www.springer.com/us/book/9783642791949)的第14章中找到了另一种可能的设计。

原文:我在以下法国研究论文中找到了一个答案(可能不是最好的,所以我没有接受它,因为这是一个开放性问题)。

Blouin, Arnaud, and Olivier Beaudoux. 
"Malai: un modèle conceptuel d'interaction pour les systèmes interactifs." 
Proceedings of the 21st International Conference on Association Francophone d'Interaction Homme-Machine. 
ACM, 2009.

相关部分在第7页上是“Feedback intérimaire de l’action”;使用状态机来表示与软件的交互运行状态。

然而,这涉及到与MVP + Command模式的大幅偏离。

中文版本:

Blouin, Arnaud, and Olivier Beaudoux. 
"Improving modularity and usability of interactive systems with Malai." 
Proceedings of the 2nd ACM SIGCHI symposium on Engineering interactive computing systems. 
ACM, 2010.

链接: https://hal.archives-ouvertes.fr/file/index/docid/477627/filename/BLOUIN10a.pdf

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接