戦略モード(戦略)
アルゴリズムのファミリーを定義し、それらをカプセル化するので、彼らはお互いを置き換えることができ、このモードでは、アルゴリズムの変更は、アルゴリズムを使用している顧客には影響しませんことができます。
CashSuper:抽象クラス料金計算方法
通常の手数料カテゴリ:ノーマル料金。acceptCashは()直接的なアプローチの量を返す
割引ニーズがでコンストラクタのパラメータで初期化される:手数料カテゴリを割り引いた割引計算acceptCash()の方法
どのくらいのリベートクラス以上:フル状態パラメータは、コンストラクタで初期化する必要がありますどのように多くの。どのくらいのリベートパラメータ、計算acceptCash()メソッド。リベート金額の量=リターン-条件、合計金額を満たすために。
クライアントが使用した場合。新しいCashContext(「解析パラメータ」)のみです。その後のgetResult()を呼び出します。最終的な計算結果を得るために。CashContextクラスコンストラクタパラメータは、オブジェクトの具体的な算出方法に従って渡されているからです。
ときに使用します
- システムは、クラスの数を持っており、それらにだけ彼らの即時の行動を区別する場合
2.方法
- クラスのパッケージ、または任意の代替にこれらのアルゴリズム
3.利点
- アルゴリズムは自由に切り替えることができます
- 複数の条件を使用しないでください(ないポリシーモードは、我々は、複数の条件文を使用している場合、メンテナンスに助長されていません)
- 拡張性は良いですが、ちょうどインターフェイスを実装するための戦略を追加します
4.欠点
- 戦略は、クラスの数を増加し、各ポリシーは、クラス、再利用の非常に小さい可能性があります
- すべてのクラスが露出外交政策に要求されます
5.使用シナリオ
- 唯一のアルゴリズムや行動上の複数のクラスがわずかに異なるシナリオであります
- アルゴリズムは、シーンの切り替えが自由に必要となります
- ルールは、アルゴリズムのシーンを保護する必要があります
6.応用例
- 旅行政策への道であるそれぞれの旅行、自転車、車、など、
- モールのプロモーション、割引、フル削減、など
- LayoutManagerのでJava AWT、すなわちレイアウトマネージャ