템플릿 패턴(Template Method Pattern)은 객체지향 디자인 패턴 중 하나로, 알고리즘의 구조를 정의하고, 일부 단계를 서브클래스에서 구체적으로 구현하도록 하는 패턴입니다. 이 패턴은 알고리즘의 뼈대를 제공하면서, 구체적인 내용은 서브클래스에서 정의하도록 허용하여 코드의 재사용성과 유연성을 높입니다.
package ex05;
import ex05.teacher.HtmlTeacher;
import ex05.teacher.JavaTeacher;
import ex05.teacher.PyhtonTeacher;
/**
* 템플릿 : 반복적인 작업을 간편하게 하기 위해 미리 정의된 틀이나 형식
*/
public class App {
public static void main(String[] args) {
JavaTeacher jt = new JavaTeacher();
jt.수업하기();
/*PyhtonTeacher pt = new PyhtonTeacher();
pt.입장하기();
pt.출석부르기();
pt.파이썬강의하기();
pt.퇴장하기();*/
PyhtonTeacher pt = new PyhtonTeacher();
pt.수업하기();
HtmlTeacher ht = new HtmlTeacher();
ht.수업하기();
}
}
package ex05.teacher;
//템플릿
public abstract class Teacher {
public void 수업하기(){
입장하기();
출석부르기();
강의하기();
퇴장하기();
}
public void 입장하기(){
System.out.println("입장하기");
}
public void 출석부르기(){
System.out.println("출석부르기");
}
public abstract void 강의하기();
public void 퇴장하기(){
System.out.println("퇴장하기");
}
}
package ex05.teacher;
public class JavaTeacher extends Teacher{
//캡슐화 수업하기만 pulic이면 가져다가 쓸떄 javaTeacher하고 .을 클릭하면 고민안하고 수업하기만 누르면된다.
/* public void 수업하기(){
입장하기();
출석부르기();
강의하기();
퇴장하기();
}
public void 입장하기(){
System.out.println("입장하기");
}
public void 출석부르기(){
System.out.println("출석부르기");
}*/
public void 강의하기(){
System.out.println("자바 강의하기");
}
}
package ex05.teacher;
public class PyhtonTeacher extends Teacher {
public void 강의하기(){
System.out.println("파이썬 강의하기");
}
}
정리하자면 구체적인 내용들 PyhtonTeacher 와 JavaTeacher 에서 사용하는 것들을 찾아 추상클래스에서 구현을 하고 따로 설정해야하는 강의하기 메서드를 추상메서드로 두어 각 클래스에서 구현을 하는 방식이다.
사용하는 이유
처음에는 구현을 했지만 teacher 수가 늘어남과 동시에 유사한 내용을 추가해야된다 이때 공통저인 부분만을 추상클래스로 묶어버리면 실수 줄일 수 있게되고 추가적으로 빠르고 그리고 효율적으로 유지보수가 가능해 진다.
Share article