タグ付けされた質問 「command-pattern」

7
戦略パターンとコマンドパターンの使用
どちらのデザインパターンもアルゴリズムをカプセル化し、実装の詳細を呼び出し元のクラスから切り離します。私が識別できる唯一の違いは、ストラテジーパターンが実行用のパラメーターを取り込むのに対し、コマンドパターンは受け取らないことです。 コマンドパターンは、作成時に実行のためにすべての情報が利用可能である必要があり、その呼び出しを(おそらくスクリプトの一部として)遅らせることができるようです。 1つのパターンと他のパターンのどちらを使用するかは、どの決定によって決まりますか?

15
Javaのifステートメントの長いリスト
申し訳ありませんが、これに答える質問は見つかりません。他の誰かが以前に質問したことはほぼ間違いありません。 私の問題は、組み込みデバイスを実行するためにいくつかのシステムライブラリを作成していることです。ラジオ放送でこれらのデバイスに送信できるコマンドがあります。これはテキストでのみ実行できます。システムライブラリ内には、次のようなコマンドを処理するスレッドがあります if (value.equals("A")) { doCommandA() } else if (value.equals("B")) { doCommandB() } else if etc. 問題は、それに対する多くのコマンドがあり、制御不能なものに素早くスパイラルすることです。外を見るのは恐ろしく、デバッグするのは苦痛であり、数か月で理解するのは面倒です。

4
適切に設計されたクエリコマンドや仕様
私はかなりの時間をかけて、典型的なリポジトリパターン(特殊なクエリのメソッドのリストの増加など)によって提示される問題の適切な解決策を探していました。http://ayende.com/blog/3955/repository-を参照してください。 is-the-new-singleton)。 特に仕様パターンを使用することで、コマンドクエリを使用するアイデアが本当に気に入っています。ただし、仕様に関する私の問題は、単純な選択(基本的にはwhere句)の基準にのみ関連し、結合、グループ化、サブセットの選択または射影などのクエリの他の問題を処理しないことです。基本的に、多くのクエリが正しいデータセットを取得するために通過しなければならないすべての追加のフープ。 (注:クエリオブジェクトとも呼ばれるコマンドパターンのように、「コマンド」という用語を使用します。クエリとコマンド(更新、削除、インサート)) したがって、クエリ全体をカプセル化する代替手段を探していますが、それでも、スパゲッティリポジトリをコマンドクラスの急増に交換するだけではないほど十分に柔軟性があります。 私は、たとえばLinqspecsを使用しましたが、選択基準に意味のある名前を割り当てることができることに価値があると感じましたが、それだけでは不十分です。おそらく、私は複数のアプローチを組み合わせた混合ソリューションを探しています。 この問題に対処するため、または別の問題に対処するために他の人が開発した可能性のある解決策を探していますが、これらの要件は満たしています。リンクされた記事では、AyendeがnHibernateコンテキストを直接使用することを提案していますが、クエリ情報も含める必要があるため、ビジネスレイヤーが大幅に複雑になっているように感じます。 待機期間が過ぎ次第、私はこれについて報奨金を提供します。だから、良い説明を付けてあなたの解決策を報奨に値するものにしてください、そして私は最良の解決策を選び、そしてランナーを賛成します。 注:私はORMベースの何かを探しています。EFやnHibernateを明示的に指定する必要はありませんが、これらは最も一般的であり、最も適しています。それが他のORMに簡単に適用できる場合は、ボーナスになります。Linq互換性もいいです。 更新:ここに良い提案があまりないことに本当に驚いています。人々は完全にCQRSであるか、完全にリポジトリキャンプにいるようです。私のアプリのほとんどは、CQRSを保証するほど複雑ではありません(ほとんどのCQRS擁護者が使用するべきではないとすぐに言っています)。 更新:ここで少し混乱があるようです。私は新しいデータアクセステクノロジーを探しているのではなく、ビジネスとデータ間の適切に設計されたインターフェイスを探しています。 理想的には、私が探しているのは、クエリオブジェクト、仕様パターン、およびリポジトリの間のある種のクロスです。上で述べたように、仕様パターンはwhere句の側面のみを扱い、結合や副選択などのクエリの他の側面は扱いません。リポジトリはクエリ全体を扱いますが、しばらくすると手に負えなくなります。クエリオブジェクトもクエリ全体を処理しますが、単純にリポジトリをクエリオブジェクトの爆発に置き換えたくありません。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.