Warning: include_once(): http:// wrapper is disabled in the server configuration by allow_url_include=0 in /home/users/2/moriya-h5/web/confrage/java/design_pattern/strategy/strategy.html on line 2

Warning: include_once(http://www.confrage.com/bin/header.php): failed to open stream: no suitable wrapper could be found in /home/users/2/moriya-h5/web/confrage/java/design_pattern/strategy/strategy.html on line 2

Warning: include_once(): Failed opening 'http://www.confrage.com/bin/header.php' for inclusion (include_path='.:/usr/local/php/5.6/lib/php') in /home/users/2/moriya-h5/web/confrage/java/design_pattern/strategy/strategy.html on line 2
Strategy | Java | 株式会社CONFRAGE
Warning: include_once(/home/sites/heteml/users/m/o/r/moriya-h5/web/confrage/bin/menu.php): failed to open stream: No such file or directory in /home/users/2/moriya-h5/web/confrage/java/design_pattern/strategy/strategy.html on line 17

Warning: include_once(): Failed opening '/home/sites/heteml/users/m/o/r/moriya-h5/web/confrage/bin/menu.php' for inclusion (include_path='.:/usr/local/php/5.6/lib/php') in /home/users/2/moriya-h5/web/confrage/java/design_pattern/strategy/strategy.html on line 17
Strategy
Strategyは、アルゴリズムをカプセル化(クラス化)し、アルゴリズムにインターフェースを適用することにより、カプセル化したクラスの戻り値をインターフェースで受けることが出来ます。
これにより、アルゴリズムの拡張性と保守性を高め、又カプセル化することによりアルゴリズムの再利用を可能にします。

以下はStrategy適用前のソースです。

Strategy適用前のソース
public class strategyMain {

    public static void main(String[] args) {
        
        if(条件){
	    // 処理1
        }else{
	    // 処理2
        }

	    System.out.println(処理1か処理2の結果);
    }
}
上記クラスの処理1と処理2の部分をそれぞれカプセル化します。この時、カプセル化したクラスに対してインターフェースを適用します。
インターフェースは以下のようにメソッド名を記述します。

Strategyのインターフェース
public interface strategyI {
    String getMessage();
}
次にこのインターフェースをimplementしたアルゴリズムをカプセル化したクラスを作成します。
アルゴリズムの分クラスを作成しなくてはいけません。

Strategyのインターフェースを実装したカプセル化クラス1
public class strategy01 implements strategyI{
    public String getMessage(){
        return "a";
    }
}
Strategyのインターフェースを実装したカプセル化クラス2
public class strategy02 implements strategyI {
    public String getMessage(){
        return "b";
    }
}
StrategyのMainクラス
public class strategyMain {

    public static void main(String[] args) {
        strategyI st = null; 
        
        if(true){
            st = new strategy01();
        }else{
            st = new strategy02();
        }
        
        System.out.println(st.getMessage());
    }
}
Mainクラスではインターフェースの変数にオブジェクトを格納することができるようになるので、Mainクラスではアルゴリズム部分を気にする必要がありません。

Back to top

Information

Warning: include_once(/home/sites/heteml/users/m/o/r/moriya-h5/web/confrage/bin/side_bar.php): failed to open stream: No such file or directory in /home/users/2/moriya-h5/web/confrage/java/design_pattern/strategy/strategy.html on line 162

Warning: include_once(): Failed opening '/home/sites/heteml/users/m/o/r/moriya-h5/web/confrage/bin/side_bar.php' for inclusion (include_path='.:/usr/local/php/5.6/lib/php') in /home/users/2/moriya-h5/web/confrage/java/design_pattern/strategy/strategy.html on line 162

Warning: include_once(/home/sites/heteml/users/m/o/r/moriya-h5/web/confrage/bin/seo.php): failed to open stream: No such file or directory in /home/users/2/moriya-h5/web/confrage/java/design_pattern/strategy/strategy.html on line 171

Warning: include_once(): Failed opening '/home/sites/heteml/users/m/o/r/moriya-h5/web/confrage/bin/seo.php' for inclusion (include_path='.:/usr/local/php/5.6/lib/php') in /home/users/2/moriya-h5/web/confrage/java/design_pattern/strategy/strategy.html on line 171