Template Method Pattern

김영우 (AvocadoSmasher)·2022년 12월 1일
0

Design Pattern

목록 보기
6/8

🔎 What is Template Method Pattern??

Template Method Pattern은 객체지향 프로그래밍을 해본사람이라면 한번쯤은 디자인 패턴의 사용을 의식하지 않은채로 사용해봤을수 있는 패턴입니다. Template Method Pattern의 핵심은 객체별 변화가 거의 없는 부분은 abstract class에 구현하고 변화가 빈번한 부분은 추상 메소드로 표현하여 상속을 받는 클래스가 구현하여 변화를 줄 수 있도록 하는 패턴입니다.

⚓️ Digging into how it works

Template Method Patttern은 생각보다 매우 간단하기에 크게 더 알아볼 부분은 없다고 생각합니다. 하지만 장단점이 뚜렷한 패턴임으로 이를 짚어보고 가도록 하죠.

  • 장점
    • 코드의 중복을 줄일 수 있다.
    • 바뀌는 부분에만 집중할 수 있어 관리가 쉽다.
  • 단점
    • 추상 메소드, 클래스가 많아지게 되면 관리가 힘들어진다.

이전에 살펴본 디자인 패턴 중에서도 Template Method Pattern을 활용한 사례가 있는데 그 패턴이 바로 Factory Method Pattern, 팩토리 메소드 패턴입니다. 팩토리 메소드 패턴에서 보면 실제 객체를 생성하는 부분은 abstract class로 상속받는 클래스에서 구현하도록 하는데 이러한 부분이 Template Method Pattern을 적용한 사례입니다.

💻 Code (feat. Java)

매우매우 간단한 코드를 통해 알아본다면 교수라는 클래스가 있고 teach라는 메소드를 통해서 강연을 함을 알리고 각 학과별 교수를 서브 클래스로 만들어 각자 major라는 메소드를 통해서 본인의 전공을 소개한다면 다음과 같은 구조가 될 것입니다.

abstract public class Professor{
		public void teach(){
				System.out.println("학생들에게 강연을 한다.");
		}
		abstract public void major();
}
public class SoftwareProf extends Professor{
		@Override
		public void major(){
				System.out.println("내 전공은 소프트웨어");
		}
}
public class MathProf extends Professor{
		@Override
		public void major(){
				System.out.println("내 전공은 수학");
		}
}

위에서 보면 Professor 라는 부모격 되는 추상 클래스에서 teach라는 공통의 메소드를 구현하고 학과 교수라는 서브 클래스별 각자 다르게 구현해야하는 메소드는 abstract 메소드로 표현하여 각자 구현하도록 하였다. 이와같은 패턴이 Template Method Pattern이다.

📌 Summary

오늘은 Template Method Pattern에 대해서 알아보았습니다. 객체지향 프로그래밍을 접해본 이라면 누구나 한번쯤은 알게 모르게 경험했을 만한 매우 심플한 패턴이지만 어떻게 보면 매우 중요한 fundamental한 패턴이었습니다. 공통된 것은 묶어 한군데에 구현하고 바뀌는 부분만 따로 Override하여 구현하도록 한 패턴인 Template Method Pattern 이러한 기초적인 구조 또한 하나의 디자인 패턴이라는 점! 기억하고 넘어갑시다.

profile
Android Studio 공부 중

0개의 댓글