我即将将 Swing 应用程序从使用 ActionListeners 重构为 Action 类,因为我意识到我的许多菜单项也将在工具栏中使用。
现在我有一个类ImportExport
,它处理底层模型的状态,然后显示适当的用户对话框。ImportExport
具有 和的save()
功能。当用户单击“打开”菜单项时,动作侦听器调用,首先检查模型是否有更改,如果是这种情况,则会显示一个对话框,询问用户是否要先保存。现在,如果用户单击“是”调用,它将再次执行一些检查并显示用户对话框。非常持久:退出此操作的唯一方法是成功保存或用户决定要取消。我强烈依赖提供的反馈,如果用户想取消,我也会取消呼叫saveAs()
open()
open()
open()
open()
save()
save()
save()
open()
功能。
我想把这个ImportExport
类分成三个类(OpenAction
, SaveAction
& SaveAsAction
),每个类都是子类AbstractAction
并最终摆脱了这个ImportExport
类。SaveAction
这就是我的问题出现的地方:如果用户想要在打开另一个模型之前保存模型,我如何告诉执行?如果用户决定取消,我如何获得反馈?
这甚至是正确的方法吗?我不喜欢在保存和打开操作中有重复的代码,我已经在我的底层模型中加入了尽可能多的功能,但是用户对话框显然不合适,所以这是没有选择的。完全被Action
设计为拥有这种功能,或者我只是保留我的ImportExport
类,并简单地将所有操作调用委托给ImportExport
. 你怎么用Actions
?