我有一个类似工作流程的流程,假设它是这样的:
现在我想要做的是甚至用户取消“吃”事件我希望他们“清理桌子”同样适用于“准备”和“把你的东西带到垃圾箱”阶段。
目前在我的实现中我不得不做几次检查,有时我最终会调用两次“清理表”,以及当我添加几个步骤时出现其他一些分支问题。
有没有明确定义的设计模式来处理这种流程? ( AFAIR有一个我不记得它的名字。)
答案 0 :(得分:11)
这是通过State pattern解决的。如果您测试驱动逻辑,它将顺利进行。
答案 1 :(得分:7)
答案 2 :(得分:3)
如果您使用的是C ++:Resource Acquisition is Initialization。
如果没有某种确定性的终结(C#,Java等),这个问题在语言中一般都没有得到很好的解决。
答案 3 :(得分:2)
在C#/ .NET中,我们有IDisposable
模式。我确信你可以用另一种语言实现类似的东西,无论它是否有垃圾收集器(虽然实现方式略有不同)。
关于此工作流方面,我只会遵循WCF中Web服务的设计模式(即Begin
和Cancel
方法)。如果您认为不适合您的情况,Windows Workflow Foundation可能是最好的方式。
答案 4 :(得分:2)
状态模式我的朋友将最终完成这项工作。