定義:
戦略モード(Strategyパターン)、行動やアルゴリズムのクラスは、実行時に変更することができます。デザインパターンのこのタイプは、行動パターンを属します。ビジネスシナリオを処理するために必要なパッケージ、柔軟な呼び出し方法の各メソッド。
シナリオ:
図1に示すように、多くのクラスは、唯一の行動におけるそれらの間の差は、その後戦略パターンは、オブジェクトが動的に挙動の数のアクションを選択することができる可能に使用するシステムが存在する場合。
2、システムは動的にいくつかのアルゴリズムのいずれかを選択する必要があります。
それが適切なモードでない場合、オブジェクトは、行動をたくさん持っている3.場合は、これらの行為は、達成するために、複数の条件付き選択文を使用する必要がありました。
ここでは、アルゴリズムが「バブル」、「速い」..アルゴリズムの種類は、いくつかのビジネスシナリオを解決するために、コードの期間、操作のためではないこと。
一般的な状況:
If..else複数のシーン、単に特定のメソッドを実行し、より困難なif..elseをもたらし維持するだけでなく、ビジネスの変化は、コードの変更をもたらした。条件を満たしています
実際の例:
操作インタフェース:
パブリック インターフェース操作{ 公共 のint doCompute(INT NUM1、INT NUM2)。 }
実装クラス、加算と減算:
パブリック クラス OperationSubは、実装動作{ @Override 公共 INT doCompute(INT NUM1、INT NUM2){ 戻り NUM1 - NUM2します。 } }
パブリック クラス OperationAddは、実装動作{ @Override 公共 INT doCompute(INT NUM1、INT NUM2){ 戻り NUM1 + NUM2と、 } }
電卓カテゴリ:
パブリック クラス電卓{ プライベート運転操作; プライベート ボイドsetOperation(運転操作){ この .operation = オペレーション; } プライベート INT doOperation(INT NUM1、INT NUM2){ 戻り 、この.operation.doCompute(NUM1、NUM2)を、 } }
テストカテゴリ:
パブリック 静的 ボイドメイン(文字列[]引数){ 電卓電卓 = 新しい計算(); calculator.setOperation(新しいOperationAdd()); int型の結果= calculator.doOperation(21,4 )。 System.out.println(結果)。 }
必要に応じて他のメソッドを追加する場合、(...新)、その後serOperationインターフェースの操作を実装する新しいクラスを作成する必要があります。
利点:
開閉、優れた拡張性の原則に従ってください。
短所:
1.クラスを増やすための戦略では、より多くなります。
あなたが実際の開発で戦略パターンを使用している場合、我々はあなたのパートナーは戦略がされているかを知るように文書を書くために覚えておく必要がありますので、2戦略のすべては、にさらされるべきです。史郎のデフォルトは3つの認証戦略を提供するように、明らかにそうでないと、我々が使用する方法がわからない、文書に書かれている必要があります。
個人的な理解に基づいて記事を書くために、間違っている場合は、私を修正してください。
出典ます。https://github.com/RecursionHs/uareright/tree/master/design_mode