본문 바로가기
Java/Design Pattern

[Java] 템플릿 메서드 패턴 (Template Method pattern)

by 스응 2023. 2. 11.
728x90
728x90

#  관련 포스팅

  - 추상 클래스 : https://young0105.tistory.com/46

 


템플릿 메서드 패턴 (Template Method pattern)

  - 추상 메서드 or 구현된 메서드를 활용하여, 코드의 흐름(시나리오)를 정의하는 디자인 패턴

  - '행위' 디자인 패턴

  - final로 선언함

      → 자식 클래스가 해당 메서드에 대해 재정의할 수 없게 함 (메서드 오버라이드 금지)

  - 프레임워크에서 자주 사용됨

  - 부모 클래스에서 선언되어, 전체적인 흐름을 정의함

      → 각 자식 클래스마다 다르게 구현되어야 하는 부분은 추상 메서드로 선언함

      → 자식 클래스는 추상 메서드를 구체화함

  - 전체적인 구조는 바꾸지 않으면서, 특정 단계에서 수행하는 내역을 바꿈

 

// 부모 클래스 파일 //

// 메서드1 선언
// 메서드2 선언
...

// 템플릿 메서드 
final public void 메서드명() {
    // 실행의 순서에 따라 메서드들을 나열함
    메서드1();
    메서드2();
    ...
}

 

// 예시 //

public abstract class Car {

    public abstract void drive();
    public abstract void stop();

    private void startCar() {
        System.out.println("시동을 켭니다");
    }

    private void turnOff() {
        System.out.println("시동을 끕니다");
    }

    public abstract void wiper();

    // 후크 메서드
    public void washCar() {}

    // 템플릿 메서드
    final public void run() {
        startCar();
        drive();
        wiper();
        stop();
        turnOff();
        washCar();
    }

}

#  후크 메서드

pulic void 메서드명() {

}

 

  - 아무 것도 구현하지 않는 일반 메서드

  - 템플릿 메서드(실행의 흐름) 안에 넣어두고, 필요하면 재정의하여 사용할 수 있도록 함

 

320x100
반응형

댓글