2011-02-07 7 views
1

状態設計パターンを使用してコードを再設計したい。状態は特定のオブジェクトに属します。状態設計パターンを使用した再設計 - 疑問

例:ST1、ST2、ST3:

クラスAは、次の3つの状態を持つことができます。

同様に、別のクラスBは、2つの状態:st4、st5を持つことができます。

クラスCの状態がst1、st4、st5の場合があります。

基本的にこれらの状態は、複雑なオブジェクトの場合には交換可能です。

また、これらのクラスA、B、およびCには、状態によって使用される固有のデータが含まれています。

私の質問はです:どのようにステートマシンを設計する必要がありますか?クラスごとに個別のSMが必要ですか?すべての州で共通の基本インターフェースを使用できますか?

私を助けてください。あなたはもっと多くの情報が必要な場合は私に多くの質問をすることができます。

答えて

1

私の質問の状態 マシンを設計すべきか、 個々のSMは、すべてのクラスのためにそこにすべきですか?

私があなたの説明を理解していれば、答えは "はい"です。それぞれのオブジェクトは独自のステートマシンを必要とします。

すべての州に共通の基盤がありますか のインターフェースですか?

一般的なインターフェイスは、複数の実装で共通のAPIを意味します。どのような共通の方法でどのような共通の方法があり、どのように実装が国ごとに異なるのですか?

異なる動作がない場合は、各状態ごとにクラスが必要ない場合があります。状態の集合と遷移を管理する規則を管理するStateクラスとFSMを持つことができます。

+0

提案をお寄せいただきありがとうございます。私は、このアプローチが初期のスタートアップには適していると思います。既存のコードのすべての機能が説明されると、 – wthomas

0

私の謙虚な経験では、定型デザインパターンは何らかの形で使用するのが難しいです。定型コードをたくさん生成する傾向があるためです。私は通常、問題の標準関数ポインタのアプローチを好む。オブジェクト/状態がそれほど大きくない/複雑すぎない場合は、より簡単な方法です。

MY2C

+0

オブジェクトが小さく、状態があまりにも多いのではないかと思いますが、私の場合は伸縮性のあるデザインをしたいと思います。関数ポインタを使うことは即座の解決策であると思われるので、メンテナンスに少しでも余計な努力が必要だと感じています – wthomas

+0

@wthomas:悪魔は詳細です:)あなたのコードで幸運を祈る! – neuro