템플릿 메소드 패턴이란?
상위 클래스에서, 추상 메소드를 정의하고(템플릿)
하위 클래스에서 추상 메소드를 구현하는 패턴
: 처리의 흐름은 상위클래스가 결정한다.
상위클래스가 뼈대 결정 > 하위클래스에서 내용 결정
예제)

AbstractDisply class
display(): 추상 메소드 open,print,close 를 사용한 메소드 => 템플릿 메소드
open,print,close는 CharDisplay/StringDisply같은 하위클래스에 구현을 맡김(오버라이딩)
public abstract class AbstractDisplay {
public abstract void open();
public abstract void print();
public abstract void close();
public final void display()
{
open();
for(int i= 0;i< 5;i++){
print();
}
close();
}
}
Main
d1에는 CharDisplay의 open() 호출
d2에는 StringDisplay의 open() 호출
d3에는 StringDisplay의 open() 호출
=> 다형성
public class Main{
public static void main(String[] args){
AbstractDisplay d1= new CharDisplay('H');
AbstractDisplay d2= new StringDisplay("Hello, world.");
AbstractDisplay d3= new StringDisplay("안녕하세요.");
d1.display();
d2.display();
d3.display();
}
}
템플릿 메소드의 장점?
로직 공통화!
템플릿 메소드 패턴을 사용하지않으면,
로직을 바꿔야하는 경우 하위class의 모든 templateMethod()를 수정해야함


polymorphism(다형성)
다형성은 class에 적용되는 말이 아님
method에 적용되는 말임! (주의)
dog.speak() cat.speak() ...등등
'복습 > 소프트웨어디자인패턴' 카테고리의 다른 글
| Singleton 패턴 (0) | 2026.04.17 |
|---|---|
| Factory Method 패턴 (1) | 2026.04.17 |
| Adapter 패턴 (0) | 2026.04.17 |
| Iterator 패턴 (0) | 2026.04.17 |
| 디자인패턴 (기초,uml) (0) | 2026.04.17 |