戦略パターンと委任パターン(代理人ではない)の違いは何ですか?戦略パターンと委任パターンの違い
答えて
戦略パターンは、共通のソフトウェア問題に対する非常に特殊な設計ソリューションです。 戦略パターンは、戦略(または戦略の名前の一部としての)と呼ばれるインターフェースが
- であることを意味します。このインタフェースにはexecute()というメソッドが必要です。
- Strategyインターフェイスを実装するConcreteStrategyA、ConcreteStrategyBなどの1つ以上の具体的なクラスがあります。
- も戦略
代表団がパターンよりも元本で含まれているコンテキストクラスがあるはずです。委任は、単一のオブジェクトがすべてを担当するのではなく、責任を他のオブジェクトに委任することを意味します。これが一般的なテクニックである理由は、カップリングを減らし、結束性を高めることによって、ソフトウェア開発の2つの基本的な原則を強制するということです。
パターンを心配する必要はありません。プリンシパルに焦点を当て、解決策が改善されると感じたら、より良いマウストラップがあるかどうかをパターンを見てください。あなたはパターンの代わりに、校長に焦点を当てる場合は、あなた自身がすべてのパターンで失われたとパターンを実装するためのパターンを実装するばかりでしょう...
「委任」は実際にはデザインパターンではなく、コンポーネントAがタスクBをどのような種類のタスクに委譲するかという一般的なプログラミング手法です。多くのコンテキストで委譲を使用できます。
戦略パターンは、典型的には、実装の詳細として委任を頻繁に使用する特定のパターンです。
たとえば、戦略のパターンを実装して、戦略インタフェースのさまざまな実装を持って、実行時に適切な実装を選択することを含む
strategy.execute(x)
戦略パターンを使用して、それを呼び出すことがあります。その実装を呼び出す行為は委任です。
だから、それはどちらでもない/またはコンセプトは無料です。
として、私にはまだjavaの8とC#の両方が、今渡す機能をサポートすることを与えられた設計パターンのルートを使用することの利点に自分の考えを与えるために誰かを探していました委任。 ウィキペディアは、委任パターンと戦略パターンを相互に参照することなく定義しています。彼らは彼らの意図が異なるかどうか疑問に思いました。 http://en.wikipedia.org/wiki/Strategy_pattern http://ja.wikipedia.org/wiki/Delegation_pattern ありがとうございます。 – hIpPy
戦略は、委任よりも高レベル(またはさらに重い)であると考えることができます。また、委任はおそらくより一般的です。 – skaffman
ウィキペディアのdelegation_patternはbsのように見えます...私はそれが本当のパターンだとは思わない。それは一般的に知られているパターンではありません。パターンの目的は、あなたが部屋に100人の開発者を持つことができ、特定のパターンについて話すときに、デフォルトのクラス、構造、メソッド、および関係が既にそれらのすべてによって知られていることです。私は100人の開発者に "委任パターン"について言及していると思われますが、ほとんどがあなたに奇妙な外観を与えるでしょう。 – mson
は、ここで考えます:
参加者は時(委譲クラスを模倣します少なくとも私がそれらを使ったように、それが正規の方法であるかどうかは確信していませんが、それは私が通常それを行う方法です)。基本的に、複数のエントリポイント(メソッド)を持つクラスがあり、実行時に実装を変更したい場合は、同じインターフェイスを実装するデリゲートを作成します。
実行時に交換できるようにしたいクラスの部分がある場合は、単一のメソッドインタフェース(executeCalculationなど)でStrategyクラスを作成し、それを集約コンポーネントにしますそのクラスを含む。
要約すると、戦略は単一の動作を含み、代理人は一連の動作を実装し、代理人を使用して戦略を実装できます。
戦略パターンとデリゲートを意味するなら、関数/ lambdasが引数として渡されるので、少なくともがあります。少なくとも、デリゲートのためにコンパイルする必要があるクラスに関してオーバーヘッドは少なくなります。
私は実際にこのページは私がStrategyパターンを使用してどのように動作するかを知っている引数
- 1. 委任パターンと間接パターンの違い
- 2. 戦略パターンとアダプタの違い
- 3. デフォルト戦略の戦略パターン
- 4. デザインパターン - 戦略パターン
- 5. リファクタリングヘルプ - 戦略パターン
- 6. Strutsとの委任パターン
- 7. 戦略パターンのバリエーション
- 8. Symfony2の戦略パターン
- 9. コンポーネントモデルとゲームデザインの戦略パターン
- 10. 使用戦略パターン
- 11. Swift:プロトコルと委任パターンについて
- 12. 戦略パターンへのスイッチケース
- 13. 戦略パターンの質問 - PHP
- 14. 戦略パターンの助けが
- 15. テンプレートパターンと戦略パターンの違いは何ですか?
- 16. Javaの委任パターンについて
- 17. 戦略パターンと依存性注入
- 18. 戦略パターンとAndroidサービス/ UIメッセージ通信
- 19. 戦略パターンは、これが正しい
- 20. OOPのデザイン - 作成戦略/パターン
- 21. 戦略パターンの実装方法は?
- 22. ユーザーのメンバーにアクセスする戦略パターン
- 23. phantomjsの戦略パターンを使用する
- 24. C#戦略パターン設計の問題
- 25. 内部列挙型の戦略パターン
- 26. SimpleInjectorを使用した戦略パターン
- 27. これは戦略パターンですか?
- 28. JPA /休止状態:サブタイピング戦略対「パターン」
- 29. チェックされた例外の仕様と戦略のパターン
- 30. 委譲パターン用UML
委任パターンは依存性注入と同じですか? – sivabudh
@ ShaChris23:いいえ依存関係注入は、依存関係のハードコードを取り除き、それらの依存関係の代替実装を(実行時またはコンパイル時に)使用できるようにします。依存関係を使用するクラスは、依存関係を作成する責任がありません。外部から「注入」されます。委任パターンは、他のオブジェクトに作業を委任するだけです。これらのオブジェクトは「依存関係」である場合とそうでない場合があり、外部から注入されている場合とされていない場合があります。 –