I.はじめにStrategyパターン
1.定義
戦略モード(戦略):一緒アルゴリズムパッケージのセット、それはお互いを置き換えることができるように、同時にアルゴリズムの変更は、顧客の使用には影響しません。
2、使用シナリオ
カプセル化するために使用することができ、ルールのほぼすべてのタイプ、彼らは分析中に様々なビジネスルールを適用し、異なる条件での必要性を聞くたびに、あなたは、この変化の可能性に対処するための戦略パターンを使用することを検討することができます
3、長所と短所
利点:
- アルゴリズムは自由に切り替えることができます
- 条件付きの複数使用しないでください(私たちは、複数の条件文を使用することがポリシーモードでない場合は、メンテナンスに助長されていません)
- 拡張性は良いですが、ちょうどインターフェイスを実装するための戦略を追加します
短所:
- 戦略は、クラスの数を増加し、各ポリシーは、クラス、再利用の非常に小さい可能性があります
- すべてのクラスが露出外交政策に要求されます
図3に示すように、UMLクラス図
第二に、戦略パターンの実装
1、政策の役割
抽象的な政策の役割は、戦略、抽象的アルゴリズムの家族は、通常、インターフェイスのメソッドとプロパティを持っている必要があり、それぞれの戦略やアルゴリズムを定義しています。このアルゴリズムは、「アルゴリズム」という意味です。
2、具体的な戦略の役割
特定のアルゴリズムを達成するために、即ち、ポリシーを実装するための抽象操作は、底部がプリントで置き換えました。試験3 ConcreteStrategyのカテゴリ、および他の2つのクラスはConcreteStrategyA同様に、私は繰り返しません。
3、コンテキストコンテキスト
また、コンテキストパッケージの役割と呼ばれるコンテキストのコンテキストの役割は、存在していてもよいパッケージング戦略、アルゴリズム、変化に対するシールド層モジュールの直接アクセスを接続する役割を果たしています。
4、クライアントのクライアント
結果は以下の通りであります:
これは、アルゴリズムAであり
Bがアルゴリズムであることを
アルゴリズムCであります
5、分析
図から分かるように、戦略パターンの使用新しいアルゴリズムの必要がある場合には、単にアルゴリズムの新しいタイプを追加し、次の更新クライアント側が選択することができますが、独自のアルゴリズムには影響しません。
同時に、我々は明らかにすることを見ることができ、クライアントは非友好的なクライアントのために、このようなプログラムを判断の多くを行っています。私たちは、コンテキスト、変換してみましょう、より良いプログラムを書く、「簡単な工場」のモデルと組み合わせを。
第三に、簡単な工場と組み合わせる戦略パターン
図1に示すように、変換後のコンテキスト
2、クライアントの変換後
「簡単な工場」+「ポリシーモード」を使用すると、クライアントコードはより簡潔な、見ることができます。しかし、またしても、親戦略アルゴリズムがクライアントに知らせていない、クライアントから特定のアルゴリズムが完全に独立します。
シンプルなファクトリパターン、お読みください参考:https://blog.csdn.net/qq_36095679/article/details/89256921