有一些基本的模式,你会想要利用:
> MVC或Observer模式.第一个关键不在于您的高级架构的宗教或模式 – 狂热者实施.重要的是您的软件可以识别其当前状态和显示状态之间的差异,并且适当地解耦.您的视觉状态和应用程序状态之间需要有一个共同的,明确界定的耦合.这为您提供了创建命令所需的常见架构(请参阅#2).
> Command模式.您可以使用命令模式获得大量的质量(尽管可能会以某些代码为代价看起来像向导生成).对命令模式采取的具体方法可能会有所不同(每个命令通过覆盖实现一个类,每个命令通过事件处理程序实现一个类,例如),但命令是@Ralph建议构造堆栈的“action”类周围.
这可能有点棘手,但是一般的方法是侦听将数据从视觉状态“提交”到应用程序状态的事件. Validated
事件可能是一个很好的钩子文本框. Click
事件对于Button来说更有意义.当该提交发生时,您将创建与该控件相关联的命令,尝试执行该命令,并且如果命令成功完成,则将该命令添加到undo堆栈.现在您正在跟踪正在发生的情况以及正在发生的数据.
> Memento模式. @JP拉出最后一块拼图.您可以在保存的命令上使用纪念品来存储执行命令之前受影响的控件的状态.这与您的命令界面上的UnExecute()成员相结合,应该是执行任务所需的最后一个核心设计.
关于这样一种结构化方法的好处是,您现在有一个自然的扩展点,需要在命令的基础上进行其他行为.例如,交易是自然契合的.在我目前的项目中,我正在使用WPF ICommand
接口(在我的winforms项目中)提供有关给定命令CanExecute()
在任何给定时间的反馈.这允许我以纯粹的命令驱动方式适当地启用和禁用UI小部件. 原文链接:https://www.f2er.com/windows/365472.html