デザインモード---テンプレートモード


定義
動作中のアルゴリズムのフレームワークを定義し、いくつかのステップをサブクラスに遅延させる.サブクラスがアルゴリズムの構造を変えずに、アルゴリズムの特定のステップを再定義することができるようにする.
 
ケース
/**
 *      (    )
 */
public abstract class Game {

    //      
    public abstract void initialize();
    public abstract void startPlay();
    public abstract void endPlay();

    //  
    public final void play(){

        //     
        initialize();

        //    
        startPlay();

        //    
        endPlay();
    }
}
 
/**
 *     (  )
 */
public class BasketballGame extends Game {
    @Override
    public void initialize() {
        System.out.println("Basketball game initialize...");
    }

    @Override
    public void startPlay() {
        System.out.println("Basketball game startPlay...");
    }

    @Override
    public void endPlay() {
        System.out.println("Basketball game endPlay...");
    }
}
 
/**
 *     (  )
 */
public class FootballGame extends Game {
    @Override
    public void initialize() {
        System.out.println("Football game initialize...");
    }

    @Override
    public void startPlay() {
        System.out.println("Football game startPlay...");
    }

    @Override
    public void endPlay() {
        System.out.println("Football game endPlay...");
    }
}
 
public class TemplatePatternDemo {

    public static void main(String[] args) {

        Game basketball = new BasketballGame();
        basketball.play();
        Game football = new FootballGame();
        football.play();

    }

}
ゲームテンプレート類(Game)では、プレイ方法に論理があり、書き換えができない、いわゆるテンプレート方法があります.他の3つの基本的な方法は、initialize()、startPlay()とendPlay()のサブクラスがあります.