9.템플릿패턴

강재영's avatar
Aug 14, 2024
9.템플릿패턴
 
💡
템플릿 패턴(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

강재영 블로그