問題タブ [state-pattern]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
7 に答える
134136 参照

java - FSMを実装する方法-Javaでの有限ステートマシン

私は仕事のために何かすることがあります、そして私はあなたの助けが必要です。を実装してFSM - Finite State Machine、charシーケンス(A、B、C、A、Cなど)を識別し、それが受け入れられたかどうかを確認します。

State、、の3つのクラスを実装することを考えていEventますMachinestateクラスはでノードを提示します。これFSMを実装することを考えましたState design pattern。すべてのノードは抽象クラスの状態から拡張され、すべてのクラスはさまざまなタイプのイベントを処理し、新しい状態への遷移を示します。あなたの意見ではそれは良い考えですか?

次に、すべての遷移を保存する方法がわかりません。mapここでも、開始点を保持し、次の状態である種のベクトルを取得する、ある種のを実装することを考えましたが、それが良い考えかどうかはわかりません。

私はそれを実装する方法のいくつかのアイデアを得ることができてうれしいです、あるいは多分あなたは私にいくつかの出発点を与えることができます。

FSMをどのように保存する必要がありますか?つまり、プログラムの開始時にツリーをどのように構築する必要がありますか?私はそれをグーグルで検索し、たくさんの例を見つけましたが、私を助けるものは何もありません。

どうもありがとう。

0 投票する
2 に答える
1390 参照

java - Java State 設計パターン / 「サブステート」

私は Java でコーディングしており、次の例のように State デザイン パターンを使用しています

ただし、私が持っているUMLは次のようなものです:

「サブステート」があります。どのようにコーディングできますか?抽象クラスを作成する必要がありますか、State 1それとも他の方法がありますか? 検索しても、このような例は見つかりませんでした。

0 投票する
1 に答える
261 参照

design-patterns - 状態パターンの誤用

状態から状態への単純なフロー (全部で 6 または 7) を作成しようとしており、状態パターンを実装することにしました。実際にはメイン フローが存在するはずなのに、各状態を各状態に遷移させることに関してオーバーヘッドが多すぎるように感じました。したがって、基本的に各状態は実際には次の状態に移行するだけです。これは状態パターンの目的ではありませんね。ほぼすべての状態から他のすべての状態に遷移できるパターンとして理解しています (いくつかの例外はあるかもしれません)。シナリオにはどのパターンを使用する必要がありますか?

助けてくれてありがとう。

0 投票する
1 に答える
437 参照

c# - 状態パターン - 各遷移の前にアクションを実行

モデル クラスの上で実行する単純な状態パターンを実装しました。私のアプリケーションは C# WPF で書かれています。

まず第一に、状態パターン ロジックをどこに置く必要があるのか​​よくわかりません。コントローラーまたはサービスクラスに配置する必要がありますか?

実際の移行を行う前に、いくつかのことを確認したいとします。現在、状態パターン クラスから直接呼び出すことができる仕様を作成しました。

しかし、これは正しいアプローチですか?

これは、状態パターン内の検証/チェックポイント用です。しかし、遷移を行う前に状態パターン内で実行する必要があるアクションについてはどうでしょうか。

これらのアクションをある種のサービス クラスに実装し、これらのサービス クラスを状態パターンから直接呼び出します。

これも正しいアプローチですか?

0 投票する
2 に答える
3094 参照

java - 状態パターンで状態遷移を定義するのは誰ですか?

State patternを使用して、状態に応じて動作を変更するオブジェクトをモデル化できること、およびContextが持つことができるさまざまな状態が、インターフェイスを表す具体的なクラスにカプセル化されていることを理解していStateます。私がはっきりしていないのは、このパターンで状態遷移がどのように発生するかです。個人statesは、誰がフォローするかを知って決定しますか、それともContext次にどの状態になるかを決定するのは個人ですか?

0 投票する
1 に答える
298 参照

java - コア Java/JSF/サーブレットの状態パターンの例は?

State pattern について学びました。コア Java/JSF/サーブレット コードのどこでこのパターンが実装されているかを知りたいです。状態遷移がどのように実装され、誰がその役割を果たし、誰がその役割を果たしているのかを見たいstatesですcontextか?

0 投票する
2 に答える
793 参照

java - 状態パターンでの継承階層の実装

私はこれに非常に似たデザインを持っています:

ここに画像の説明を入力してください

ここで、 NewOrderRegisteredGrantedはすべて共通のメソッドAddOrderline()とを持っているCancel()ため、両方のメソッドを親クラスにリファクタリングするのは簡単です。

Cancelこの問題は、線を引きたいときに発生しますShipped(現在は図には示されていません)。

Shipped lineはサポートしていないので、NewOrderRegisteredGrantedAddOrderline()の親クラスを2つのクラスに分割する必要があります。Cancel()AddOrderline()

NewOrder次に、2つの関数を取得するために、2つの親クラスを拡張する必要があります。

ノート

  1. この例は非常に単純化されています。私の実際のアプリケーションには約12の状態があります。
  2. コードはPHPですが、C#またはJavaのソリューションは歓迎されます。これは、ソリューションがすべて多重継承をサポートしていないため、ソリューションは類似していると思われるためです。
0 投票する
1 に答える
232 参照

design-patterns - 状態パターンの状態の最大数

状態パターンを使用しようとしていますが、質問があります。次のような状態の数が限られている状況専用に設計された状態パターンです。

TCPState: 1- TCPEstablished 2- TCPLisenting 3- TCPClosed など

または、従業員の勤怠システムの従業員など、何百もの状態がある場合に使用できます。従業員は、バランスにある年間休暇の数、これを補償する必要がある時間数など、複数のコンポーネントの複合状態を持ちます。各従業員は、最終的に特定の行動を伴う状態と見なされる複数の属性の組み合わせを持つことができます。

この場合、何百もの状態オブジェクトが存在することになりますが、これは正しいことでしょうか? 状態オブジェクトの命名をどのように管理しますか? たとえば、状態の 3 分の 1 が特定のメソッドの特定の動作を共有し、別の 4 分の 1 が特定のメソッドの別の動作を共有している場合はどうしますか。つまり、すべての状態がすべてのメソッドで固有の動作を必ずしも持っているわけではありません。実装をコピーして、この共通メソッドに対して同じ動作をするすべての状態に貼り付けるのは賢明ではないと思います!

どうもありがとうございました。

0 投票する
1 に答える
220 参照

c++ - 参照を使用した状態パターンの実装

とりわけ、状態パターンを適用して、コードをリファクタリングしようとしています。私はJavaプログラマーなので、よろしくお願いします;)ですから、ここに基本状態クラスがあります。

と子の状態の1つ:

次に、現在の状態を保持し、fromImageメソッド/関数内でprocessImageを呼び出すContextクラスがあります。

問題は、このコードをコンパイルしようとすると、10行目に次のエラーが発生することです。

私は何を間違えましたか?CONTEXTクラスヘッダーファイルにAlghoritmStateの不完全なクラス宣言を追加しようとしましたが、別のエラーがスローされるだけです。

ヒントをいただければ幸いです。

0 投票する
2 に答える
341 参照

oop - セッターと状態パターンのロジック

簡単なステートマシンを定義しましょう:

および単純な状態オブジェクト

セッターに見られるように、状態の変更が有効であることを確認します。私の質問:

  1. セッターメソッドにいくつかのロジックを追加するのは良い解決策ですか?
  2. いつロジックを追加すべきか、いつ追加すべきでないか?
  3. そうでなければ、なぜですか?