アルゴリズムの切り替えパターン
サンプルコードは
二つのクラスインスタンスを比較し
比較結果をint値で戻すというクラスを
Strategy継承クラスで作成します
アルゴリズムを切換えてはいませんが
戻り値のint値をアルゴリズムとして表現しています
以下のクラス構成で確認します
クラス | 説明 |
---|---|
interface Strategy | 切替えアルゴリズムのメソッドを定義 メソッドはsam.classの2つのインスタンスを比較し、比較結果をint値として戻す |
compare.class | Strategyを実装する |
useStrategy.class | userが利用し、切替アルゴリズムを実行する |
sam.class | 比較される対象クラス |
user(Main.class) | 動作確認 |
*user 他の開発者がこのパターンを利用する、という意味合いを含みます |
interface_Strategy
interface Strategy{int compare(sam s1,sam s2);}
compare.class
class compare implements Strategy{
public int compare(sam s1,sam s2){
if(s1.i < s2.i){return 1;}else
if(s1.i == s2.i){return 0;}else{
return -1;
}
}
}
useStrategy.class
class useStrategy{
Strategy strategy = null;
useStrategy(Strategy st) {this.strategy=st;}
int compare(sam s1,sam s2){return strategy.compare(s1,s2);}
}
sam.class
class sam{
String str;
int i;
sam(String str,int i){
this.str = str;
this.i = i;
}
}
user(Main.class)
public static void main(String[] args){
sam sam1 = new sam("s1",3);
sam sam2 = new sam("s2",2);
compare com = new compare();
useStrategy us = new useStrategy(com);
System.out.println(us.compare(sam1,sam2));
}}