소개
상속을 통해 슈퍼클래스의 기능을 확장할 때 사용하는 패턴입니다.
변하지 않는 로직은 슈퍼클래스에, 자주 변경되거나 확장하는 기능은 서브클래스에서 만듭니다.
서브클래스에서 선택적으로 오버라이드할 수 있도록 만들어 둔 메소드를 훅 메소드(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");
}
}
반응형