Strategyパターンの
オブジェクトが持っている特定の動作を、しかしに異なるシナリオ、動作が持っている別のアルゴリズムを。例えば、人
これは、アルゴリズムのセット、およびそのポリシークラス抽象クラスポリシーのサブクラスとして、一連のアルゴリズムへのパッケージのセットを用意することです。
主なソリューション
アルゴリズム似たような状況の様々な、複雑で面倒な性質を利用の場合... ELSEまたはスイッチ...ケースをもたらします。
アブストラクト(戦略)カテゴリ:
このインタフェース、さまざまな方法で種々の異なるアルゴリズムに共通のインタフェースを定義する
インタフェースまたは抽象クラスの実装を使用し、一般的に、環境、異なるアルゴリズムを使用して、このインターフェース呼び出しの役割。
具体的な戦略(コンクリート戦略)カテゴリ:
特定のアルゴリズムを提供し、抽象インタフェースのポリシー定義を実装します。
:環境(コンテキスト)クラスの
参照は、ポリシークラスを保持し、最終的にクライアントの呼び出しに。
1つの パブリック クラス戦略{
2 公共 静的 ボイドメイン(文字列[]引数){
3 コンテキストコンテキスト= 新しいコンテキスト(新規追加())。
4 INT I = context.toCalculate(1、2 )。
5 のSystem.out.println(I)。
6 }
7 }
8
9 // 抽象策略
10 抽象 クラス計算{
11 パブリック 抽象 INT toCalculate(INT A、INT B)。
12 }
13
14 // 具体策略
15 クラス addは延び計算{
16 @Override
17 公衆 INT toCalculate(INT A、INT B){
18 リターン A + 、Bを
19 }
20 }
21
22 クラスのサブ延び{計算
23 @Override
24 公衆 INT toCalculate(INT A、INT B){
25 リターン - A 、Bを
26 }
27 }
28
29 // 環境
30 クラスコンテキスト{
31は、 // パッケージ戦略
32 専用計算CAL;
33である
34れる 公共コンテキスト(計算CAL){
35 この .CAL = CAL;
36 }
37
38である 公共 INT toCalculate(INT A 、int型B){
39 リターンcal.toCalculate(A、B);
40 }
41れます }