問題タブ [strategy-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.
design-patterns - 戦略パターンと委任パターンの違い
戦略パターンと委任パターン(委任ではない)の違いは何ですか?
xml - Strategy パターンの Stategy への文字列
私は AS3 で作業していますが、これは一般的な質問である可能性があると思います。
XML ファイルを使用して、Strategy パターンを実装する特定のクラスのオブジェクトのパラメーターを定義しています。多種多様なオブジェクトがあり、これは、これらのオブジェクトをカスタマイズするためのデザイナー フレンドリーなソリューションとして機能します。私は XML ファイルでしか文字列を定義できないので、誰かがその文字列を取得して適切な戦略を実装するためのきちんとした方法を提案できますか?
私は最初に2つの考えを持っていました。まず、オブジェクトのコンストラクターに文字列を渡し、正しい戦略を適用するオブジェクト内に Switch Case を設定します。
次に、コントローラーのクラスの外にスイッチを配置し、正しい戦略をオブジェクトのコンストラクターに渡します。
オブジェクトクラス自体は私の特定の実装の影響を受けないため、2番目はよりクリーンなバージョンのようです。しかし、どちらもまったく正しくないと感じています。
追加の提案をいただければ幸いです。
c# - C#戦略パターンとデータベースアクセス
私はパターンのデザインに不慣れで、今はストラテジーパターンを実装したいと思っています。これが私のコードです:
SendAppointmentクラスのSendメソッドでは、アイテムが送信されます。私の質問は、このクラスのデータベースに接続する必要がありますか?もしそうなら、私もSendTaskでデータベースに接続する必要があります。しかし、この時点で私は自分自身を繰り返していますよね?したがって、接続文字列が変更された場合は、すべてのクラスでこれを変更する必要があります。どうすればこの問題を解決できますか?
spring - AOPで戦略パターンを実装する方法
誰かがAOPで戦略パターンを実装する方法を教えてもらえますか?
Spring-AOPまたはAspectJを使用した例は非常に役立ちます。
design-patterns - 戦略デザインパターンと状態デザインパターンの違いは何ですか?
Strategy デザイン パターンと State デザイン パターンの違いは何ですか? 私はウェブ上でかなりの数の記事を読んでいましたが、違いを明確に理解できませんでした.
誰かが素人の用語の違いを説明できますか?
c# - Unity を使用した戦略パターンと依存性注入
私はついに依存性注入に足を踏み入れています(長い間遅れていました)。Unity を使い始めて、戦略パターンの問題に遭遇しました。コンテナーを使用して、名前に基づいて戦略の特定の実装を返すことができますが、コンテキストで適切な戦略を取得する方法がわかりません。
簡単な例で説明しましょう。コンテキストは車で、IEngine (戦略) があり、FastEngine と SlowEngine の 2 つの実装があります。コードは次の行に沿って表示されます。
私の問題は次のとおりです。速い車または遅い車をインスタンス化するにはどうすればよいですか? コンテナを使用して各実装を提供し、使用する「デフォルト」実装を設定できます。
しかし、私が望むのは、戦略の特定の実装を備えた車をリクエストできることです-次のようなものです
コンテナを使用してそれを行うことはできますか? または、コンテナーを使用する Factory を作成する必要がありますか? 任意のガイダンスをいただければ幸いです-これについて正しく考えているかどうかはわかりません!
design-patterns - ストラテジー パターンはいつ、なぜ使用する必要がありますか?
戦略パターンはいつ使用されますか?
次のようなクライアント コード スニペットが表示されます。
これを次のようにリファクタリングできるようです。
コードの最初のセクションは、ウィキペディアのページから直接取得されました。大きな違いの 1 つは、コンテキストがなくなることですが、この例では何もしていません。誰かが戦略が理にかなっているより良い例を持っているかもしれません。私は通常、デザイン パターンが好きですが、これは有用性を追加することなく複雑さを追加しているようです。
design-patterns - オブジェクトのデコレータを作成するのが適切なのはいつですか? また、戦略を適用できるようにオブジェクトを書き換えるのが適切なのはいつですか?
たとえば、ショッピング カートに追加できる Product クラスがあるとします。カートに入っているときに別の商品と一緒にパッケージして、15% の割引を追加できるようにしたい場合があります。
製品クラスは、取引を可能にする新しいサブクラスで装飾する必要がありますか、それともカートが値下げ「戦略」オブジェクトを製品に添付して価格を下げることができるように製品クラスを再設計する必要がありますか?
これは抽象的な例なので、必要に応じて使用してください。
ruby - 計算に異なるデータを使用する請求モデルの戦略パターンは?
いくつかの異なる方法でクライアントに請求する請求書モデルがあります。簡潔にするために、インプレッションあたりのコストと電話問い合わせあたりのコストの 2 つに焦点を当てます。私の考えは、これら (およびその他) を戦略として実装し、それらを請求書クラスに動的に混合することでした。
インプレッション/コールの数を決定するために使用されるさまざまな情報源があるため、これは適切と思われます。Invoice
これは、基本的な式をクラスに保持しながら、戦略にカプセル化できます。
インプレッション単価の計算は簡単ですnum impressions X cost per impression
。
電話での問い合わせの計算はもう少し複雑ですnum calls X cost per call
。
次に、モジュールは次のようになります。
ただし、通話がカウントされるかどうかは通話の長さに基づいており、これはモデルによって異なります。したがって、電話ログを検索するときは、この値が必要です。
私の質問は、この値はどこに保存されるのですか? 10 秒の呼び出しに基づく請求書の戦略と、30 秒の呼び出しに基づく別の戦略を作成することはできますが、それは無駄に思えます。しきい値を 15 秒にするという取引が成立した場合、新しい戦略を作成する必要があります。この問題を解決するための最良の設計選択は何ですか?