0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Strategy Pattern

Last updated at Posted at 2020-11-11

アルゴリズムの切り替えパターン

Design Pattarm MENU

サンプルコードは
二つのクラスインスタンスを比較し
比較結果を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));
}}
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?