[[デザインパターン]] > テンプレートメソッド(Template Method)
*テンプレートメソッド(Template Method) [#waac56eb]
#setlinebreak(on);

共通の流れで処理を行うロジッックをいくつも作る場合に利用できるパターン。
メインの流れや共通の処理を記述した親クラスを用意する事で、サブクラス側では必要な箇所のみ実装する事ができる。
様々なフレームワークでよく利用されている。

** テンプレートメソッドを利用しない場合 [#dd78b613]
#html(<div style="padding-left:10px;">)
処理1
#mycode{{
public class HogeLogic1 {

    public void execute(args) {

        procInit();

        procMain();

        procEnd();
    }

    /** 初期処理 */
    private void procInit(){


    }

    /** メイン処理 */
    private void procMain(){


    }

    /** 終了処理 */
    private void procEnd(){


    }
}
}}

処理2
#mycode{{
public class HogeLogic2 {

    public void execute(args) {

        procInit();

        procMain();

        procEnd();
    }

    /** 初期処理 */
    private void procInit(){


    }

    /** メイン処理 */
    private void procMain(){


    }

    /** 終了処理 */
    private void procEnd(){


    }
}
}}
#html(</div>)

** テンプレートメソッドを利用した場合 [#j98d4292]
#html(<div style="padding-left:10px;">)
親クラス
#mycode{{
public class BaseLogic {

    public void execute(args) {

        procInit();

        procMain();

        procEnd();
    }

    /** 共通で行う初期処理 */
    protected void procInit(){


    }

    /** メイン処理 */
    abstract protected void procMain();

    /** 共通で行う終了処理 */
    protected void procEnd(){


    }
}
}}

処理1
#mycode{{
public class HogeLogic extends BaseLogic {

    /** メイン処理 */
    protected void procMain(){


    }
}
}}

処理2
#mycode{{
public class HogeLogic extends BaseLogic {

    /** メイン処理 */
    protected void procMain(){


    }
}
}}


#html(</div>)


トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS