問題タブ [command-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 に答える
403 参照

spring - GWT コマンド パターンを Spring と統合する方法

GWT コマンド パターンを使用して RPC を実装するプロジェクトがあります。ここで、Spring を GWT と統合する方法を説明します。Spring がなくても RPC を実現できます。しかし、ここでは、GWT サーバー側パッケージに Spring Dependency Injection を使用する必要があります。

それを実装するための適切なサンプルまたはリンクが見つかりません。この要件を持つリンクとサンプルを提供してください。

コマンド パターンがなくても、次のリンクを参照して Spring と GWT を統合できます

http://technophiliac.wordpress.com/2008/08/24/giving-gwt-a-spring-in-its-step/

https://docs.google.com/document/pub?id=1USHYx9cB3B1s1zM4dlkzEZ759D3lEfavn_dDewvBkaA

ありがとう、サリサ

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

uml - UMLクラス図の破線の矢印の意味は何ですか?

一般的なUMLクラス図の破線の矢印の意味は何ですか?

例として:この画像の破線の矢印の意味は何ですか(クライアントからConcreteCommandへ):

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

記事:コマンドパターン

0 投票する
3 に答える
35641 参照

java - javaでアクションの単純な元に戻す/やり直しを実装するにはどうすればよいですか?

XML エディターを作成しましたが、最後の段階で行き詰まっています。元に戻す/やり直し機能を追加することです。

ユーザーが要素、属性、またはテキストを JTree に追加したときに、元に戻す/やり直しを追加するだけです。

私はまだこれに慣れていませんが、今日の学校で、undo と redo という 2 つのスタック オブジェクト [] を作成し、実行されたアクションをそれらに追加しようとしました (失敗しました)。

たとえば、私は持っています:

performElementAction は、JTree に Element を実際に追加するだけです。

このアクションを元に戻すスタックに追加する方法を追加したいと考えています。undo.push(実行されたアクション全体)または何かを行う簡単な方法はありますか?

0 投票する
4 に答える
2065 参照

java - 実行するコマンドのリストを繰り返します-どのパターンですか?

実行するコマンドを含むファイルを読み込む Java プログラムを作成しました (自分で作成した言語で)。コマンドは文字列として読み込まれ、配列に入れられます。これで、「ディスパッチャー」メソッドが配列をループして、コマンドを解釈し、それらに作用するそれぞれのメソッドを呼び出します。

もちろん、これはネストされた if ステートメントの大きなブロックにつながります。

今はほんの一握りのコマンドしかありませんが、何百ものコマンドを追加したい場合はどうすればよいでしょうか? コードは保守できなくなります。

今、条件付きロジックを完全に取り除くことができるかどうか疑問に思っています。とにかくある時点で文字列を解釈する必要があるため、コマンドパターンはここではあまり役に立たないようです..これは、ネストされた「if」がたくさんあることを意味します。それが不可能な場合、コマンドの追加、編集、または削除を容易にする方法でコマンドとその文法を再構築する最善の方法は何でしょうか?

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

domain-driven-design - あるコンテキストでは集約ルートであるが、別のコンテキストでは集約ルートではないエンティティのコマンドを作成するにはどうすればよいですか?

私は、従業員の転勤のためのサービスを実行するベンダーを見つける会社のプロジェクトに取り組んでいます。これらのサービスは、ピアノの準備や輸送用、貴重品用の箱の作成など、引っ越し業者が行う専門知識がないものです。

このドメインでは、注文には1:多くの場所があります。

引っ越し業界では、ベンダーが要求されたサービスを実行するまで、注文は頻繁に流動的です。したがって、このモデルには、注文と場所に適用されるいくつかのステータス(送信済み、キャンセル済み、保留中など)があります。

ここに適用される非常に単純なビジネスルールがいくつかあります。サンプリングは次のとおりです。

  1. 注文が保留になると、すべての場所が保留になります。
  2. 親の注文が保留中の場合、ロケーションを保留から外すことはできません。

等々。これらの規則から、これが集合的なルート境界を形成することは私には明らかであるように思われます。したがって、私は、コンテキスト/サービス/あなたがそれを呼びたいものの名前であるMyClient.Statuses.Order集合体を持っています:Statuses

これらのオブジェクト(Order、Location)は両方とも、他のコンテキストではGUID IDを持っています(たとえば、状態遷移を持たないCRUDベースの属性の場合)。だから今、私たちはついに私の質問に行き着きます:

場所を保留にするコマンドとハンドラーを作成するにはどうすればよいですか?

結合を最小限に抑えるために、これをDRYおよびサービス指向に保ちたいのですが、2つのエンティティ間の親子関係を1か所だけに保つことは非常に困難です。

オプション1-単一のロケーションID:

オプション2-注文IDと場所ID:

オプション3-「注文に属する場所」をカプセル化するクラスを持つ単一のパラメーター

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

c++ - 関数呼び出しでテンプレート テンプレート パラメーターを使用する

実際、すべての回答は素晴らしく、有益ですが、私の問題を解決するものではありません。回答してくれた非常に親切な人々のせいではないと思いますが、代わりに、私の質問の言い回しがまずかったです。したがって、より関連性の高いコード例を含む完全に新しい質問をここに投稿することにしました: Mixing Command pattern , Factory pattern and templates all together .... 気になる人がいたら...

元の質問:

私がやりたいことをすることは可能だとは思いませんが、念のためお願いします....

ファクトリを使用して作成したい一連のテンプレート クラスがあります。ファクトリを使用する理由は、ファクトリには、そのファクトリを通じて作成されたすべてのクラスを初期化するために使用されるデータ メンバーがあるためです。

たとえば、このクラスを考えてみましょう:

上記のようなクラスを作成し、それらの初期化、有効期間などを処理できるように、コマンド ファクトリを作成しようとしました ...

私の (非テンプレート) CommandFactory では、次のメソッドを定義しました。

ただし、これはコンパイルされません。「void operator()(P1 p1, P2 p2, P3 p3, P4 p4)」という行は、次のエラーを生成します。

エラー C2065: 'P1': 宣言されていない識別子

"DoSomething" のようなクラスには宣言が 1 つしかないため (DoSomething は常に < int, float > を使用します)、テンプレート引数推定を使用して、次のような構文になると考えました。

まったく可能ですか?もしそうなら、適切な構文は何ですか?

次のようなファクトリメソッドをいつでも定義できると思います。

そして電話する

しかし、それは冗長であり、あまりエレガントではありません...

0 投票する
4 に答える
1074 参照

c++ - コマンドパターン、ファクトリパターン、テンプレートをすべて一緒に混合...

すでにここで同様の質問をしましたが、質問の定式化が不十分で例が悪かったため、希望する答えが得られませんでした。だから私はそれに別のショットを与えます、うまくいけばより良い説明とより良いコードで。

以下のコードは不要な詳細が削除されていますが、機能します。可能であれば、テンプレート化された関数呼び出しを単純化するために、テンプレート引数の推定を使用したいと思います。

コマンドを作成するファクトリがあります。コマンドを作成するには、次のような呼び出しを使用します。

ご想像のとおり、parameter1のタイプはParameterType1などです。

ここで、コマンドの定義-DoSomeStuff-自体を見ると:

ご覧のとおり、ParameterTypeN情報はすでにDoSomeStuff宣言内にあります。

上記のcreateCommand呼び出しをもっと単純なものに置き換えることがどういうわけか可能かどうか疑問に思いました:

CommandFactoryコードは次のとおりです。

基本的に重要なのは、CommandFactory内の複雑さを移動して、「クライアントコード」(createCommandの呼び出し)をできるだけ単純かつ短く保つことです。

何か案は ?

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

oop - 可変遅延のクライアントサーバーコマンドデザインパターン

私は、サーバーを制御するクライアントプログラムを作成しています。サーバーは、いくつかの大きなハードウェアを制御しています。サーバーは、ハードウェアを初期化、開始、停止、および制御するためのコマンドを受信する必要があります。

クライアントからサーバーへの接続は、TCPまたはUDPソケットを介して行われます。各コマンドは、SCADAプロトコル(ModbusやDNP3など)を使用して適切なメッセージにカプセル化されます。

初期化フェーズの一部には、クライアントからサーバーに一連のコマンドを送信することが含まれます。場合によっては、複数のサブシステムが同時に初期化されるのを防ぐために、コマンド間に秒単位の遅延が必要です。遅延の値は、コマンドのタイプによって異なります。

コマンドデザインパターンは、ここに従うのに良いアプローチだと思います。クライアントはConcreteCommandsをインスタンス化し、呼び出し元はそれをキューに入れます。可変遅延を組み込む方法と、可変遅延のメッセージの送信を処理するためのタイマーとキューを含むより良いパターンがあるかどうかはわかりません。

私はC#を使用していますが、これはデザインパターンの問題であるため、おそらく無関係です。

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

asp.net-mvc-3 - .NET MVC 3 のコマンド パターン (コントローラーからのジャンクの削除)

特に編集内容を Thing に保存するために、.NET MVC 3 アプリケーションにこのコマンド パターンを実装しようとしています。どのように進めていくか決めかねています。実際の質問に入る前に、簡略化したコードを次に示します。

私の EditThingViewModel は、POCO クラスで構成されるドメインから完全に切り離されています。私の EditThingCommand は次のようになります。

ただし、ModifiedThing のビルドは引き続きコントローラーで行われます。それがこの場合の作業の大部分です。ModifiedThing がビルドされるまで (およびオプティミスティック コンカレンシー チェックのために "古い" タイムスタンプが適用されるまで) は、データ コンテキストで Update を呼び出すコマンドだけが残っています。

明らかに、他のコマンドで簡単に装飾できることには価値がありますが、 ModifiedThing の構築をコントローラーの外に移動できるようにしたいと考えています。(おそらく、この質問はまさにそれに関するものです。) EditThingCommand は私のドメインにあり、EditThingViewModel への参照がないため、そこに移動できません。ビューモデルを poco エンティティにマッピングするために、プレゼンテーション層に別のコマンドを用意することは理にかなっていますか?

0 投票する
4 に答える
13715 参照

java - コマンドパターンの実際の適用例

コマンド パターンTransactional behaviorを使用して(および)を実装できますUndo
しかし、グーグルでこれらの例を見つけることができませんでした。switched onまたはであるランプの些細な例しか見つかりませんでしたoff。を使用して実装されたこの/これらの動作
のコーディング例 (できれば ) はどこにありますか?JavaCommand Pattern