소개

상속을 통해 슈퍼클래스의 기능을 확장할 때 사용하는 패턴입니다.

변하지 않는 로직은 슈퍼클래스에, 자주 변경되거나 확장하는 기능은 서브클래스에서 만듭니다.

서브클래스에서 선택적으로 오버라이드할 수 있도록 만들어 둔 메소드를 훅 메소드(hook method)라고 부릅니다

 

예제 (Java)

package example.template_method_pattern;

public abstract class Game {
    // hook method
    protected void init() {
        System.out.println("init Game");
    }

    // abstract method
    protected abstract void start();
    protected abstract void end();

    public final void play() {
        init();
        start();
        end();
    }
}

class MarioGame extends Game {
    @Override
    protected void start() {
        System.out.println("Start MarioGame");
    }

    @Override
    protected void end() {
        System.out.println("End MarioGame");
    }
}

class LuigiGame extends Game {
    @Override
    protected void init() {
        System.out.println("init LuigiGame");
    }

    @Override
    protected void start() {
        System.out.println("Start LuigiGame");
    }

    @Override
    protected void end() {
        System.out.println("End LuigiGame");
    }
}
반응형