2

オブジェクトのマップを持つアプリケーションを設計しようとしていIActionます。各IActionオブジェクトには、IAction IAction.processAction()その中に含まれる知識を実行するメソッドがあります。これにより、Web サービスなどを呼び出すデータベースにクエリを実行できます。各コントロールの実行後、次のインスタンスIActionに送信されます。IAction

アプリケーションが起動するとMap、正しい実行順序になるマップが含まれます。IntegerタイプのキーMapは、実行が実行される順序です。 IAction.processAction()制御をマップの最後にジャンプしIActionたり、まとめて停止したりできます。

頭の中でコードを視覚化することができ、これを支援するためにいくつかの行を書きました。この種の処理に簡単に役立つデザインパターンを探しています。Command パターンがこの役割に適しているかどうかはわかりません。

誰かが、どのパターンが法案に合っているかどうかを教えてくれることを望んでいました.

4

4 に答える 4

4

Command パターンは確かにここで何らかの関連性を持っているようです。

しかし、私はあなたが間違った方法でそれについて行っていると思います。デザイン パターンは基本的に、製品がどのように機能するかを設計する際に、生産的な方向性に沿って思考を導くための例とレシピであることを意図しています。あなたがやっていること、良いデザインを採用し、それを「公式の」デザインパターンに押し込もうとすることは、すべて逆です。

それ以外に、IActionオブジェクトのマップの鍵は何ですか? (おそらくリンクされた) リストは、彼らにとってはるかに自然な構造のように思えます。

于 2009-10-19T14:45:21.580 に答える
3

これは、 Chain of Responsibility パターンのバリエーションのように思えます。

于 2009-10-19T14:44:39.113 に答える
1

あなたの IAction は明らかにCommandパターンに従っています。

実行するアクションのリストは、複合パターンである可能性があります。

于 2009-10-19T14:42:57.967 に答える
0

コードを投稿すると、優れたソリューションを提供するのに役立ちます。コードがない場合は、ガイドラインのみが表示されます。

もう 1 つ:デザイン パターンは単なるガイドラインです。ソリューションを実装するときは、ソリューションを特定のデザイン パターンで処理しないでください。問題の解決策を思いついたら、解決策が特定のパターンに適合するかどうかを判断できます。そうでない場合でも、設計パターンなしでソリューションを実装できます。

Command_Pattern seems to be the solution for executing simple commands . コマンドが互いに独立している場合、単純なコマンド パターンで問題が解決します。コマンドの一部が他のコマンドに依存している場合は、階層を確立してChain-of-responsibility_patternを使用する必要があります。

複合パターンを使用して、すべてのコマンドを Map オブジェクトに格納できます。

于 2016-03-02T16:06:49.163 に答える