我正在为现有命令行应用添加GUI。应用程序使用的属性保存在类中,我正在创建一个绑定到这些选项对象的对话框。但是,如果我想从该对话框中取消,那么我将重置我的选项对象的值,这是我遇到probs的地方。
我可以获取选项对象的内部副本,并使用它来重新填充原始对象以允许取消/回滚,但这似乎很麻烦。
我可以(以某种方式)在每个类上实现一个撤销功能 - 是否有一个模式?
我使用独立的GUI控件来保存值,并且只有在确认对话框后才更新选项对象。
什么是最佳做法?
答案 0 :(得分:0)
您应该考虑创建一个仅由GUI使用的新类。 GUI有自己的需求。
如果有多个线程访问选项对象,请确保处理多线程问题。
解决撤消功能的设计模式称为Command和Memento。 我认为Memento会更适合这种情况。
在SO上查看这个问题:Design Pattern for Undo Engine。
以下链接是感兴趣的(以及更多):http://www.coderanch.com/t/100676/patterns/Memento-Vs-Command-pattern
http://www.developer.com/design/article.php/3720566/Working-With-Design-Patterns-Memento.htm
http://www.colourcoding.net/blog/archive/2009/07/23/reversibility-patterns-memento-and-command.aspx