問題タブ [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 投票する
1 に答える
2544 参照

c# - C# の状態パターンとイベント

C# では、OnClick、OnExit などの保護された仮想メソッドを介して、所有するクラスによってのみイベントを発生させることができます。私がやろうとしているのは、いくつかの複雑なクラスに GOF 状態パターンを実装することです。状態クラスから所有クラスのイベントを発生させる方法が見つからないことを除いて、これまでのところすべてうまくいきました。

たとえば、私のボタンには 2 つの状態 (アップとダウン) があり、DownState クラスはユーザー入力をチェックし、必要に応じてボタンの Click イベントを発生させます。

どうやってやるの?

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

java - 状態パターンを実装することは、単純なチェスゲームの良い設計上の選択ですか?

2人のユーザーがプレイする(または1人のユーザーが白と黒の両方をプレイする)オフラインのAIなしGUI同期コマンドラインチェスゲームを作成しようとしています。つまり、スレッドは1つだけです。

チェスゲームには、特別な動きが含まれています{キャプチャ、アンパッサン、プロモーション、キャスリング、チェックメイト、膠着状態}

ユーザーは、開始位置と終了位置を指定してゲームを操作します。例:e1g1。それだけです。

私はオブジェクト指向デザインの特権を最大限に活用しようとしています。しかし、この要件のためだけに。状態パターンを実装する価値はありますか?ユーザーはコマンドを入力するだけなので、ゲームはユーザーにコマンドの後に他の決定をするように求めてはなりません。

編集:これを明確にしないことをお詫びします。私が混乱したのは、この画像のようなゲームコントロールレベルで状態を実装するか、この画像ここに画像の説明を入力してくださいのようなゲームピースレベルで状態を実装するかです。ここに画像の説明を入力してください

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

.net - ステートマシンの単体テスト

私はC#ユニットテスト機能を使用するのが初めてです。stateのパターンを使用してステートマシンを作成しましたGoF

そのようなステートマシンを適切にテストする方法は? この具体的なステート マシンは、単なる実装例です。適切な実装には、遷移の状態と条件がさらに多くあります。

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

oop - OO プログラミングの問題 - ステート デザイン パターン

私は最終日、どのパターンが自分の特定のシナリオに最も適しているかを考えようとしましたが、State パターンと Strategy パターンの間を行き来しました。私がインターネットで例を読んだとき、それは完全に理にかなっています... しかし、実際にそれを自分の問題に適用しようとするのは別のスキルです. 私のシナリオと直面している問題について説明します。うまくいけば、誰かが私を正しい方向に向けることができます.

問題: さまざまな同期状態 (最新、古い、未公開、未公開など) を持つベース オブジェクトがあります。オブジェクトの状態によって動作が異なります。たとえば、ベース オブジェクトの最新バージョンを取得できません。それは公開されたことがない。この時点で、State 設計パターンが最も適しているように思えます...それを実装したところ、各状態に CanGetLatestVersion、GetLatestVersion、CanPublish、Publish などのメソッドが含まれるようになりました。

この時点ですべてが良さそうです。しかし、基本クラスから派生した10個の異なる子オブジェクトがあるとしましょう...各状態に対して「公開」メソッドが実行されると、実際に操作を実行するには子オブジェクトのプロパティが必要ですが、各状態が必要になるため、私のソリューションは壊れていますベースオブジェクトへの参照のみがあります。C# での問題を説明するサンプル プロジェクトの作成に時間を費やしました。

次に、各子オブジェクトの状態を実装することを考えました...これはうまくいきますが、50個のクラス、つまり(10個の子 x 5個の異なる状態)を作成する必要があり、それはまったくクレイジーに思えます...なぜ私はここにいるのですか?

どんな助けでも大歓迎です。わかりにくい場合はお知らせください。明確にすることができます。

乾杯

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

design-patterns - State、IntegerState、ExplicitIntegerState、ImplicitIntegerState の違いは何ですか?

状態パターンはよく知っていますが、最近、タイトルにある他の 3 つのデザイン パターンについて聞いたことがあります。これら 3 つのパターンと正常な状態のパターンの違いがわかりません。Google も役に立ちません。


更新: 私は最初に次の図 (見出し: デザイン パターン間の関係) でこれらのパターンを見つけましたが、それらに関する追加情報はありません。

デザインパターン

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

c# - 状態と工場の設計パターンを使用してステータスと検証ルールを管理する

私の最近のプロジェクトでは、そのプロパティがさまざまなユーザーによって段階的に完了するクラスがありOrder、各ユーザーは部分的に完了した注文を次のユーザーに参照するため、たとえば、BOM (Bill of Material)が指定されている場合は、生産を計画している場合は、などです。 OrderStatusOrderStatusNewStatusStatusBOMAttachedStatusStatusPlannedStatusここに画像の説明を入力

また、各ステップでいくつかの検証ルールを に適用する必要があります。たとえば、ユーザーは( ) を作成するときにOrder顧客名を指定する必要があります。OrderNewStateOrderPlannedStatus

そこで、State Design パターンを使用して状態を管理し、Factory Design パターンを使用して検証をチェックすることにしました。

ここに画像の説明を入力

そして、私が私のを保存したいとき、私はそれを設定するためにcurrentOrder呼び出します:StateFactory.CreateOrderStatus(currentOrder)Status

私の場合、この方法は正しいですか?より良い解決策はありますか?

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

asp.net-mvc - Entity Framework による状態パターン

私はモデルを持っておりEnquiry、これは次の 2 つの状態のいずれかになります (他にもありますが、この目的のために 2 つだけを比較Newします) Closed。問い合わせの状態は、ユーザーが問い合わせに対して何ができるかによって異なります。たとえば、終了した問い合わせは削除できませんが、新しい問い合わせは削除できます (基本的な例)。

これを維持したいのですが、Entity Framework方法がわかりません。以下は私のコードです。

問い合わせ:

お問い合わせの状態:

新しいお問い合わせの状態:

CloseEnquiryState:

私の質問は、これらのさまざまな状態をデータベースに保存する方法がわかりません。int各状態で何らかのフィールドを使用Enquiryし、FK を介してそれらをマップする必要がありますか? CanAddLinesまた、フィールドとCanDeleteデータベースもマップする必要がありますか? ロジックがステート内に含まれているため、ステート パターン パラダイムにはまったく新しい