개발자의 스터디 노트
자바 디자인패턴 - 템플릿 메서드 패턴(Template Method Pattern) 본문
이번 포스팅은
https://coding-factory.tistory.com/712
위 포스팅을 보고 작성하였습니다.
템플릿 메서드 패턴이란?
- 특정 작업을 처리하는 일부분을 서브 클래스로 캡슐화하여 전체적인 구조는 바꾸지 않으면서 특정 단계에서 수행하는 내용을 바꾸는 패턴입니다.
- 알고리즘의 구조를 메서드에 정의하고, 하위 클래스에서 알고리즘 구조의 변경없이 알고리즘을 재정의합니다. 알고리즘이 단계별로 나누어지거나, 같은 역할을 하는 메서드이지만 여러곳에서 다른 형태로 사용이 필요한 경우 유용하며 상속을 통해 슈퍼 클래스의 기능 확장이 용이합니다. 변하지 않는 기능은 슈퍼클래스에 만들어두고 자주 변경하며 확장할 기능은 서브 클래스에서 만들도록 합니다.
템플릿 메서드 패턴 장점
1. 중복코드를 줄일 수 있습니다.
2. 자식 클래스의 역할을 줄여 핵심 로직의 관리가 용이합니다.
3. 좀더 코드를 객체지향적으로 구성할 수 있습니다.
템플릿 메서드 패턴 단점
1. 추상 메서드가 많이지면서 클래스 관리가 복잡해집니다.
2. 클래스간의 고나계와 코드가 꼬여버릴 염려가 있습니다.
템플릿 메서드 패턴 사용 예제
//추상 클래스 선생님
abstract class Teacher{
public void start_class() {
inside();
attendance();
teach();
outside();
}
// 공통 메서드
public void inside() {
System.out.println("선생님이 강의실로 들어옵니다.");
}
public void attendance() {
System.out.println("선생님이 출석을 부릅니다.");
}
public void outside() {
System.out.println("선생님이 강의실을 나갑니다.");
}
// 추상 메서드
abstract void teach();
}
// 국어 선생님
class Korean_Teacher extends Teacher{
@Override
public void teach() {
System.out.println("선생님이 국어를 수업합니다.");
}
}
//수학 선생님
class Math_Teacher extends Teacher{
@Override
public void teach() {
System.out.println("선생님이 수학을 수업합니다.");
}
}
//영어 선생님
class English_Teacher extends Teacher{
@Override
public void teach() {
System.out.println("선생님이 영어를 수업합니다.");
}
}
public class Main {
public static void main(String[] args) {
Korean_Teacher kr = new Korean_Teacher(); //국어
Math_Teacher mt = new Math_Teacher(); //수학
English_Teacher en = new English_Teacher(); //영어
kr.start_class();
System.out.println("----------------------------");
mt.start_class();
System.out.println("----------------------------");
en.start_class();
}
}
'자바 > 인스턴트코드' 카테고리의 다른 글
자바 버전별 정리 (0) | 2022.04.14 |
---|---|
자바 디자인패턴 - 프록시 패턴(Proxy Pattern) (0) | 2022.04.13 |
자바 디자인패턴 - 옵저버 패턴(Observer Pattern) (0) | 2022.04.13 |
자바 디자인패턴 - 팩토리 패턴(Factory Pattern) (0) | 2022.04.13 |
자바 디자인패턴 - 싱글톤(Singleton) (0) | 2022.04.11 |