inblog logo
|
하쎄의 기술 일기장
    Design Pattern

    7. 템플릿 메서트 패턴(Template Method Pattern)

    [IntelliJ] 템플릿 메서드 패턴의 이해와 사용방법
    하세연's avatar
    하세연
    Aug 14, 2024
    7. 템플릿 메서트 패턴(Template Method Pattern)
    Contents
    1. 템플릿 메서드 패턴이란?2. 템플릿 메서드 패턴 예제

    1. 템플릿 메서드 패턴이란?

    💡
    템플릿 메서드 패턴(Template Method Pattern)은 객체지향 설계에서 상위 클래스에서 알고리즘의 구조를 정의하고, 그 알고리즘의 특정 단계는 하위 클래스에서 구현하도록 하는 행동 패턴입니다. 이 패턴을 사용하면 알고리즘의 구조를 유지하면서, 알고리즘의 특정 단계에서의 행동을 서브클래스에서 변경할 수 있습니다.
     

    2. 템플릿 메서드 패턴 예제

    다음 예제와 같이 여러 과목의 선생님이 있다.
    각각 입장, 출석, 강의, 퇴장 메서드가 존재한다.
    public class HTMLTeacher{ public void 입장하기(){ System.out.println("입장하기"); } public void 출석부르기(){ System.out.println("출석부르기"); } public void HTML강의하기(){ System.out.println("HTML강의하기"); }; public void 퇴장하기(){ System.out.println("퇴장하기"); } } public class JavaTeacher{ public void 입장하기(){ System.out.println("입장하기"); } public void 출석부르기(){ System.out.println("출석부르기"); } public void 자바강의하기(){ System.out.println("자바강의하기"); }; public void 퇴장하기(){ System.out.println("퇴장하기"); } } public class PythonTeacher{ public void 입장하기(){ System.out.println("입장하기"); } public void 출석부르기(){ System.out.println("출석부르기"); } public void 파이썬강의하기(){ System.out.println("파이썬강의하기"); }; public void 퇴장하기(){ System.out.println("퇴장하기"); } }
    이처럼 입장하기, 출석부르기, 퇴장하기 메서드의 경우 동일하지만
    강의하기의 경우는 과목명이 다르다.
    현재는 3명의 선생님이 계시지만 100명, 200명이 넘어간다면 이를 하나하나 코드를 칠 순 없다.
    이를 간편하게 코드를 찍어내기 위해 템플릿 메서드 패턴을 이용하는 것이다.
    다음 코드를 통해 템플릿을 만들어 선생님을 추상화시킨다.
    public abstract class Teacher { public void 수업하기(){ 입장하기(); 출석부르기(); 강의하기(); 퇴장하기(); } public void 입장하기(){ System.out.println("입장하기"); } public void 출석부르기(){ System.out.println("출석부르기"); } public abstract void 강의하기(); public void 퇴장하기(){ System.out.println("퇴장하기"); } }
    강의하기 외의 메서드는 직접 지정해줘 자식 클래스에서 굳이 코드를 칠 필요가 없어졌다.
    하지만 강의하기는 과목명이 각각 다르기 때문에 자식 클래스에서 코드를 완성 시킬 수 있도록 비워 놓는다.
    그리고 예시로 JavaTeacher의 코드를 확인해보자
    public class JavaTeacher extends Teacher{ @Override public void 강의하기() { System.out.println("자바 강의하기"); } }
    이렇게 Teacher를 extends 하고 강의하기만 오버라이딩 하여 강의하기를 마저 완성시킨다.
    Share article

    하쎄의 기술 일기장

    RSS·Powered by Inblog