템플릿 메소드 패턴은 동작 상의 알고리즘의 프로그램 뼈대를 정의하는 행위 디자인 패턴이다. 템플릿 메소드 패턴은 여러 작업들이 동일한 구조를 갖지만, 일부 동작은 각각 다르게 구현해야할 때 사용된다.
템플릿 메소드 패턴은 전체 실행과정을 구현한 상위 클래스(추상 클래스)와 실행 과정의 일부 단계를 구현한 하위 클래스(구체클래스)로 나뉘며, 추상 메서드를 재정의함으로써 알고리즘의 구조를 변경하지 않고 알고리즘의 특정 단계들을 다시 정의할 수 있게 해준다
public abstract class Human {
abstract void Introducing();
void eating() {
System.out.println("밥먹기");
}
void sleeping() {
System.out.println("잠자기");
}
void coding() {
System.out.println("코딩하기");
}
}
사람(Human) 클래스가 있다. 사람은 밥먹기, 잠자기, 코딩하기 메서드를 공통으로 가지고있고 사람마다 다른 방법으로 자기소개를 할 수 있다.
@NoArgsConstructor
public class Kimeunbin extends Human {
@Override
void Introducing() {
System.out.println("저는 김은빈입니다 ^^");
}
}
@NoArgsConstructor
public class Kimgeumbin extends Human {
@Override
void Introducing() {
System.out.println("저는 김금빈입니다 ㅎㅎ");
}
}
김은빈과 김금빈은 Human이라는 추상 클래스를 상속받아 3개의 공통 메소드를 가지고있고, 자기소개 메소드를 상세하게 구현하고있다. 이러한 템플릿 메소드 패턴은 중복코드를 줄여준다는 장점이 있다.
이 링크로 가면 코드를 볼 수 있다.