DESIGN PATTERN
[디자인패턴] 템플릿 메소드 패턴(template Method Pattern) 이란? - 개발자 배찌
개발자 배찌
2022. 4. 15. 13:03
728x90
😀템플릿 메소드 패턴
- 특정 작업을 처리하는 일부분을 서브클래스로 캡슐화하여 전체적인 구조는 바꾸지 않으면서
특정단계에서 수행하는 내용을 바꾸는 패턴
- 객체지향 언어로 개발을 하다 보면 무의식적으로 사용하는 패턴.

😀템플릿 메소드 패턴 장점
- 중복코드를 줄일 수 있다.
- 자식클래스의 역할을 줄여 핵심 로직의 관리가 용이하다.
😀템플릿 메소드 패턴 단점
- 추상메소드가 많아지면서 클래스 관리가 복잡해진다.
- 클래스간의 관계와 코드가 꼬일 염려가 있다.
😀코드로 알아보기!!
Teacher.java
package study.templateMethodPattern.code0;
import lombok.extern.slf4j.Slf4j;
@Slf4j
public abstract class Teacher {
public void inside(){
log.info("선생님이 교실에 들어옵니다.");
};
public void attendance(){
log.info("출석을 부릅니다.");
};
public abstract void teaching();
public void outside(){
log.info("선생님이 교실에서 나갑니다.");
}
public void start_class(){
inside();
attendance();
teaching();
outside();
}
}
MathTeacher.java
package study.templateMethodPattern.code0;
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class MathTeacher extends Teacher{
@Override
public void teaching() {
log.info("선생님이 수학 수업을 합니다.");
}
}
TemplateMethodPatternTest.java
package study.templateMethodPattern;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;
import study.templateMethodPattern.code0.MathTeacher;
import study.templateMethodPattern.code0.Teacher;
@Slf4j
public class TemplateMethodPatternTest {
@Test
void code0test(){
Teacher mathTeacher = new MathTeacher();
mathTeacher.start_class();
}
}
결과화면
선생님이 교실에 들어옵니다.
출석을 부릅니다.
선생님이 수학 수업을 합니다.
선생님이 교실에서 나갑니다.