3

戦略パターンを実装する場合、どのクラスが責任を負うかをどのように決定しますか。

  1. Contextクラスに渡す特定の具体的な戦略実装の選択(選択が静的フラグではなく、複雑なビジネスロジックに基づいていると想定)

  2. 前述の具体的な実装をインスタンス化し、実際にContextクラスに注入します

これをカバーする客観的なガイダンスがあるべきだと感じています。私はさまざまなOOPパターン(つまり、 GRASPSOLID)についていくつか読んだことがありますが、この特定の質問についてはまだあまり明確ではありません。

4

3 に答える 3

1

これは、私がDIコンテナで抱えていた問題に非常に近いものです。ここを見てください、マーク・シーマンは素晴らしい答えを提供しました。

于 2009-12-23T04:06:14.147 に答える
1

特定の状況に対処しようとしている場合は、抽象ファクトリパターンを探しています。ファクトリは、ランタイム情報に基づいてタイプのファミリをインスタンス化する方法を決定します。

抽象的にこの状況に対処する方法を知りたい場合は、依存関係の編成と履行を管理する制御の反転コンテナを探しています。戦略の登録には、条件付きロジックが含まれます。

于 2009-12-23T04:06:58.880 に答える
0

その決定は、他のすべてのDesing Patternsと同様に、コンテキスト固有です。GoFの本(イタリック鉱山)からの引用:

デザインパターンとは何ですか?

クリストファー・アレクサンダーは、次のように述べています。同じように2回"[AIS+ 77、ページx]。アレクサンダーは建物や町のパターンについて話していましたが、彼の言うことはオブジェクト指向のデザインパターンについても真実です。私たちのソリューションは、壁やドアではなく、オブジェクトやインターフェースの観点から表現されていますが、両方の種類のパターンの中核には、コンテキスト内の問題のソリューションがあります

..。

このソリューションでは、設計を構成する要素、それらの関係、責任、およびコラボレーションについて説明します。パターンはさまざまな状況で適用できるテンプレートのようなものであるため、このソリューションでは特定の具体的な設計や実装については説明していません。代わりに、パターンは、設計上の問題の抽象的な説明と、要素(この場合はクラスとオブジェクト)の一般的な配置がそれをどのように解決するかを提供します。

于 2009-12-23T04:11:57.877 に答える