哪种设计模式可以实现这个功能?

4

我有一个类似于工作流的流程,可以这样假设:

  1. 准备
  2. 吃饭
    • 把你的东西放到垃圾桶里
    • 清理桌子

现在我想做的是,即使用户取消了“吃饭”事件,我也希望他们能够完成“清理桌子”,对于“准备”和“把你的东西放到垃圾桶里”的阶段也是如此。

目前,在我的实现中,我不得不进行多次检查,有时我最终会调用“清理桌子”两次,当我添加了更多步骤时,还会出现其他分支问题。

是否有任何明确定义的设计模式来处理这种类型的流程?(我记得有一个,但我无法回忆起它的名称。


1
只是开玩笑!不要打孩子们…… - kenny
5个回答

13

这就是我想到的那个。对于工作流程来说非常灵活。干杯。 - dr. evil

8

3
如果你正在使用C++: 资源获取即初始化
在没有某种确定性终结(如C#,Java等)的语言中,通常无法很好地解决这个问题。

3
我的朋友,状态模式将使这项工作最终实现。

2
在C#/.NET中,我们有IDisposable模式。我相信您可以在另一种语言中实现类似的东西,无论它是否具有垃圾回收器(尽管实现会略有不同)。
关于工作流方面,我只会遵循WCF中Web服务的设计模式(即BeginCancel方法)。如果您认为这对您的情况来说并不过度,那么Windows Workflow Foundation可能是最好的选择。

实际上IDisposable不是一个坏主意,目前我甚至在最后一步之后还保留了对象的一个副本,但我可能会进行重构。 - dr. evil

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接