1. Template Method pattern
알고리즘의 처리 과정(시나리오)만 정의하고 수행할 구체적 처리는 하위클래스에서 정의하는 기법
프레임워크에서 많이 사용되는 설계 패턴
- 개발자가 해당 프레임워크가 지정한 시나리오에 맞게 설계해야함 (⟷ 라이브러리)
추상 클래스인 상위 클래스에서 전체적인 흐름을 정의하는 템플릿 메서드를 정의하고
다르게 구현되어야 하는 부분은 추상 메서드로 선언하여 하위 클래스에게 넘김
2. 템플릿 메서드 (Template Method)
처리 로직의 전체적인 흐름 (시나리오)을 정의하는 메서드
3. 템플릿 메서드 패턴 구현
public abstract class Car {
public abstract void drive();
public abstract void stop();
public void startCar() {
System.out.println("시동을 켭니다.");
}
public void turnOff() {
System.out.println("시동을 끕니다.");
}
public void washCar(){} # 추상 메서드 X, 하위 클래스에서 선택적으로 사용
final public void run() { # 템플릿 메서드
startCar();
drive();
stop();
turnOff();
washCar();
}
}
public class ManualCar extends Car{
@Override
public void drive() {
System.out.println("사람이 운전합니다.");
System.out.println("사람이 핸들을 조작합니다.");
}
@Override
public void stop() {
System.out.println("브레이크를 밟아서 정지합니다.");
}
}
public class AICar extends Car{
@Override
public void drive() {
System.out.println("자율 주행합니다.");
System.out.println("자동차가 스스로 방향을 바꿉니다.");
}
@Override
public void stop() {
System.out.println("스스로 멈춥니다.");
}
}