본문 바로가기
CS

[Design Pattern] 템플릿 메서드 패턴

by 차가운개발 2024. 11. 26.

템플릿 메서드 패턴은 알고리즘의 골격을 정의한다. 

이 패턴을 사용하면 알고리즘의 일부 단계를 서브 클래스에서 구현할 수 있으며, 

알고리즘의 구조는 그대로 유지하면서 특정 단계를 서브클래스에서 재정의할 수도 있다.

 

말 그대로 알고리즘의 템플릿(틀)을 만든다.

 

여러 단계 중 하나 이상의 단계가 추상 메서드로 정의되어 서브 클래스에서 구현된다.

서브클래스가 일부분의 구현을 처리하게 하면서도 알고리즘의 구조는 바뀌지 않는다.

 

ㅇ 구현 코드

상위클래스

 

하위클래스1

 

하위클래스2

 

클라이언트

 

출력

 

 

 

ㅇ 장단점

장점

  • 코드 재사용성
    알고리즘의 공통된 구조는 상위 클래스에서 정의하므로, 코드 중복을 줄이고 재사용성을 높인다.
  • 확장성
    하위 클래스가 특정 단계만 구현하거나 재정의하면 되므로, 새로운 동작을 추가하기 쉽다.
  • 알고리즘의 구조 보장
    알고리즘의 전체 흐름은 상위 클래스에서 정의되어 있으며, 하위 클래스는 이를 변경할 수 없기 때문에 알고리즘의 구조적 일관성을 유지한다.
  • 유지보수성
    공통 로직은 상위 클래스에 집중되어 있어 수정이나 유지보수가 쉽다.

 

단점

  • 클래스 설계 의존성 증가
    상위 클래스와 하위 클래스 간의 강한 결합이 발생할 수 있다.
  • 코드 복잡성 증가
    단순한 작업에서도 상속 구조를 요구하기 때문에 코드가 복잡해질 수도 있다.
  • 유연성 제한
    알고리즘의 흐름이 상위 클래스에 고정되어 있어, 전체 흐름을 수정하려면 상위 클래스를 변경해야 한다.