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();
}
}
결과화면
선생님이 교실에 들어옵니다.
출석을 부릅니다.
선생님이 수학 수업을 합니다.
선생님이 교실에서 나갑니다.
'DESIGN PATTERN' 카테고리의 다른 글
[디자인패턴] 옵저버패턴(Observer Pattern) 이란? - 개발자 배찌 (0) | 2022.04.15 |
---|---|
[디자인패턴] 싱글톤패턴(singleton Pattern) 이란? (+static) - 개발자 배찌 (0) | 2022.04.14 |
[디자인패턴] 추상 팩토리 패턴 (abstract Factory Pattern) 이란? - 개발자 배찌 (0) | 2022.04.13 |
[디자인패턴] 팩토리 메서드 패턴(Factory Method Pattern) 이란? - 개발자 배찌 (0) | 2022.04.12 |
[디자인패턴] 전략패턴 (strategy Pattern)이란? - 개발자 배찌 (0) | 2022.04.12 |