반응형
템플릿 메소드 패턴이란?
상속을 통해 부모클래스의 기능을 확장할 때 사용하는 가장 대표적인 방법이다.
변하지 않는 기능은 부모 클래스에 만들어두고 자주 변경되고 확장이 필요한 기능은 자식 클래스에서 만들도록한다.
예제
다음과 같이 클래스 A가 존재한다고 할 때 부가 기능 혹은 확장이 필요한 코드에 대해서 템플릿 메소드 패턴을 사용해서 묶어낼 수 있다.
public class A{
public void execute(){
// 부가 또는 확장이 가능한 코드
//...
// 핵심 기능
//...
}
}
부모 클래스에서는 미리 추상 메소드 또는 protecte (재정의가 가능하도록) 메소드를 정의하고 이를 이용해 주요 기능을 담당하는 템플릿 메소드를 만든다.
public abstract class A{
// hook
abstract protected void subExecute();
public void execute(){
this.subExecute();
// 핵심 기능
}
}
public class B extends A{
@Override
protected void subExecute(){
// 확장 또는 부가 기능
}
}
부모 클래스에서는 핵심 기능을 구현하고 부모 클래스를 상속한 자식 클래스에서 오버라이드해서 구현할 수 있도록 만들어둔 메소드를 훅 메소드라고 한다.
추상 메소드를 통해 subExecute를 선언해두었기 때문에 execute() 메소드에서 필요한 subExecute에 대해서 컴파일러가 에러를 뱉지 않는다.
이를 통해서 abstract class A를 상속한 B를 통해 부가 기능을 수행하거나 확장할 수 있다.
반응형