2009-05-21 10 views
3

私はワークフローのようなプロセスの何かを持っているが、このようにそれを前提としていますこれを行うにはどのデザインパターンが必要ですか?

  1. はテーブル
  2. をクリーンアップビン
  3. に自分のものを取る
    • を食べる
    • を準備します

今私がやりたいことは、ユーザーが「食べる」evをキャンセルしても私は彼らに "テーブルをクリーンアップ"してもらい、 "準備する"と "ビンにあなたのものを持って行く"のステージに行きます。

現在、私の実装ではいくつかのチェックをしなければならなかったが、時には "テーブルのクリーンアップ"を2回呼び出すようになりました。

この種のフローを処理するための明確な設計パターンはありますか? (AFAIRの名前が思い出せませんでした。

+0

ちょうど子供たちを叩いて......冗談だ! :) – kenny

答えて

9

これはState patternで解決されます。あなたがロジックをテストするなら、それはスムーズに行くでしょう。

+0

これは私が考えていたものでした。ワークフローに非常に柔軟性があります。乾杯。 –

2

C#/ .NETには、IDisposableというパターンがあります。ガベージコレクタを持っているかどうかにかかわらず(実装はわずかに異なりますが)、他の言語で同様のものを実装できると確信しています。

このワークフローの側面については、WCFのWebサービスの設計パターン(つまり、BeginおよびCancelメソッド)に従うだけです。あなたの状況にそれが過度に考慮しない場合は、Windows Workflow Foundationが行く最善の方法かもしれません。

+0

実際にIDisposableは悪い考えではありません、現在私は最後のステップの後でもオブジェクトのコピーを保持しましたが、私はそれをリファクタリングするかもしれません。 –

3

C++で作業している場合:Resource Acquisition is Initialization

一般的に決定論的ファイナライズ(C#、Javaのなど)のいくつかの並べ替えなしの言語でうまく解決されていないこの問題

1

状態パターン私の火はこの仕事を最後にするものです。

関連する問題