LoginSignup
6
5

More than 5 years have passed since last update.

デザインパターン #3 〜Template Method〜

Posted at

第3回目 Template Methodパターン

概要

Template Methodパターンは、そのような「似たような流れの処理」をスーパークラスで共通化し、「固有の処理」をサブクラスにまかせることで、「処理のテンプレート」を作成するパターンです。

サンプル

Batch.java
public abstract class Batch {
    public abstract void prepare();
    public abstract void execute();
    public abstract void finish();
    public final void run() {
        prepare();
        execute();
        finish();
    }
}
BatchA.java
public class BatchA extends Batch {
    public void prepare() {
        System.out.println(BatchA用の前処理);
    }
    public void execute() {
        System.out.println(BatchA用の処理本体);
    }
    public void finish() {
        System.out.println(BatchA用の後処理);
    }
}
BatchB.java
public class BatchB extends Batch {
    public void prepare() {
        System.out.println(BatchB用の前処理);
    }
    public void execute() {
        System.out.println(BatchB用の処理本体);
    }
    public void finish() {
        System.out.println(BatchB用の後処理);
    }
}
Main.java
public class Main {
    public static void main(String[] args){
        Batch target = new BatchA();
        target.run();
        Batch target = new BatchB();
        target.run();
    }
}

結果

BatchA用の前処理
BatchA用の処理本体
BatchA用の後処理
BatchB用の前処理
BatchB用の処理本体
BatchB用の後処理
6
5
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
6
5