我正在向现有的命令行应用程序添加GUI。应用程序使用的属性保存在类中,我正在创建一个绑定到这些选项对象的对话框。然而,如果我想取消该对话框,那么我必须重置选项对象的值,这就是我遇到问题的地方。
我可以获取选项对象的内部副本,并使用它来重新填充原始对象,以允许取消/回滚,但这似乎很麻烦。
我可以(以某种方式(在每个类上实现一个undo函数——有这样的模式吗?
我使用独立的GUI控件来保存值,并且只有在对话框被确认时才更新选项对象。
什么是最佳实践?
您应该考虑创建一个只供GUI使用的新类。GUI有自己的需求。
如果有多个线程访问options对象,请确保处理多线程问题。
解决撤消功能的设计模式称为Command和Memento。我认为梅门托更适合这个案子。
看看SO上的这个问题:撤消引擎的设计模式。
以下链接是感兴趣的(以及更多(: 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