这样做的设计模式是什么?

时间:2009-05-21 10:19:01

标签: design-patterns workflow

我有一个类似工作流程的流程,假设它是这样的:

  1. 准备
    • 带你的东西到bin
    • 清理桌子
  2. 现在我想要做的是甚至用户取消“吃”事件我希望他们“清理桌子”同样适用于“准备”和“把你的东西带到垃圾箱”阶段。

    目前在我的实现中我不得不做几次检查,有时我最终会调用两次“清理表”,以及当我添加几个步骤时出现其他一些分支问题。

    有没有明确定义的设计模式来处理这种流程? ( AFAIR有一个我不记得它的名字。

5 个答案:

答案 0 :(得分:11)

这是通过State pattern解决的。如果您测试驱动逻辑,它将顺利进行。

答案 1 :(得分:7)

听起来像Template method pattern

或者您可以通过撰写和Strategy pattern来完成此操作。

如果你开始有复杂的逻辑,那么State pattern会更好。

答案 2 :(得分:3)

如果您使用的是C ++:Resource Acquisition is Initialization

如果没有某种确定性的终结(C#,Java等),这个问题在语言中一般都没有得到很好的解决。

答案 3 :(得分:2)

在C#/ .NET中,我们有IDisposable模式。我确信你可以用另一种语言实现类似的东西,无论它是否有垃圾收集器(虽然实现方式略有不同)。

关于此工作流方面,我只会遵循WCF中Web服务的设计模式(即BeginCancel方法)。如果您认为不适合您的情况,Windows Workflow Foundation可能是最好的方式。

答案 4 :(得分:2)

状态模式我的朋友将最终完成这项工作。