私は少し電気技師でプログラマーなので、FSM の設計パターンをよく知っていると思っていました。それは:
- のセットがあります
Nodes
。 - プログラムがこのノードにあるとき、それぞれ
Node
が何をすべきかを知っています。 - それぞれ
Node
contains references to another chosen nodes
が、どのような条件の下で、選択したものに進むべきかを知っています。 event
またはafter processing
ノード上で、Node proceeds
次に選択されたノードへ
私にはそれが非常に明確だと思いました。最近、私がステートマシンを実装していたとき、ある人が私に言ったのですが、それは実際には少し変更された責任の連鎖であり(彼が正しいかどうかはわかりません)、私がしたこと/持っていたことは次のとおりでした:
- のセット
Nodes
(線形またはツリー構造を表していない) - ノードには、どの条件でどのノードにジャンプするかを知っているオブジェクトがありました
- 各ノードには独自の処理コンテキストがありました (コンテキストの一部はノード間で共有されていました)。
残念ながら、法的な問題により、ここにクラス図を貼り付けることはできません。
一方で、私たちは責任の連鎖を持っています。これは(私が理解しているように)次のように定義します。
- 私たちはいくつかの
ItemToProcess
インターフェースを持っています。 - 私たちはいくつかの
Node
インターフェースを持っています。 - ノードは、次の1 つのノードのみへの参照を持ちます。
- 各ノードが処理
ItemToProcess
し、処理された 1 つをnextNode
だから私が理解している限り:
- を使用
Chain Of Responsibility
します。各ノードで1 つのアイテムを処理する (または少なくとも処理を試行する) 必要があります。 - 一連の責任は、プロセスの連続的かつ継続的な実行を表します
StateMachine
グラフを表すために使用します- 計算を実行するために使用
StateMachine
しますが、計算の順序または種類は、いくつかのイベントによって異なる場合があります。
これらの設計パターンの理解を確認するか、どこが間違っているかを教えてください。