inblog logo
|
keepgoing
    JAVA

    [디자인패턴] 6 템플릿 매서드 패턴 (Template Method Pattern)

    김호정's avatar
    김호정
    Aug 14, 2024
    [디자인패턴] 6 템플릿 매서드 패턴 (Template Method Pattern)
    Contents
    6-1. 템플릿 메서드 장점6-2. 예시 코드
     

    6-1. 템플릿 메서드 장점

    💡
    추상클래스에서 템플릿 메서드를 구현해 상위 추상클래스로 로직을 공통화하여 코드의 중복을 줄일 수 있다.
     
    출처 )
    https://inpa.tistory.com/entry/GOF-💠-템플릿-메소드Template-Method-패턴-제대로-배워보자

    6-2. 예시 코드

    teacher 패키지를 만들어서 각 과목별 선생님을 먼저 만들어준다.
    notion image
    package ex05.teacher; public class HTMLTeacher extends Teacher{ public void 강의하기(){ System.out.println("HTML 강의하기"); } }
    package ex05.teacher; public class JavaTeacher extends Teacher{ public void 강의하기(){ System.out.println("자바강의하기"); } }
    package ex05.teacher; public class PythonTeacher extends Teacher{ public void 강의하기(){ System.out.println("파이썬 강의하기"); } }
    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("퇴장하기"); } }
    위 코드는 템플릿 매서드 패턴을 적용한 teacher 추상 클래스다.
    강의하기 매서드만 abstract 매서드로 만들어서 teacher 추상 클래스를 상속받은
    자식 클래스들이 강의하기 매서드만 재정의 하도록 할 수 있다.
    (→ 자바선생님은 강의하기 매서드를 자바 강의하기로 만들 수 있고,
    파이썬선생님은 강의하기 매서드를 파이썬 강의하기로 만들 수 있고,
    HTML선생님은 강의하기 매서드를 HTML 강의하기로 만들 수 있다.)
     
    package ex05; import ex05.teacher.HTMLTeacher; import ex05.teacher.JavaTeacher; import ex05.teacher.PythonTeacher; /** * 템플릿 : 반복적인 작업을 간편하게 하기 위해 미리 정의된 틀이나 형식 */ public class App { public static void main(String[] args) { // 캡슐화를 통해서 너한테 필요한 것만 노출시킨다. JavaTeacher jt = new JavaTeacher(); // 메모리에 띄움 jt.수업하기(); // 처음부터 이렇게 짤 수 없다. 노가다 하다보면 이렇게 해야지! 할때가 온다 PythonTeacher pt = new PythonTeacher(); pt.수업하기(); HTMLTeacher ht = new HTMLTeacher(); ht.수업하기(); } }
     
    그럼 이렇게 App에서는 캡슐화를 이용해서 수업하기 매서드만 사용해서 수업 시간 동안의
    전 매서드를 호출 할 수 있다. 물론 템플릿 매서드를 Teacher에 적용했기 때문에,
    공통되는 매서드는 작성할 필요없이 필요한 강의하기 매서드만 재정의해두면 된다.
     
    Share article
    Contents
    6-1. 템플릿 메서드 장점6-2. 예시 코드

    keepgoing

    RSS·Powered by Inblog