[8장] Template Method Pattern

ss0510s·2023년 8월 2일
1

Template Method Pattern

알고리즘의 골격을 정의한다. 알고리즘의 일부 단계를 서브클래스에서 구현할 수 있으며, 알고리즘의 구조는 그대로 유지하면서 알고리즘의 특정 단계를 서브클래스에서 재정의할 수도 있다.

OO 원칙
-할리우드 원칙: 저수준 구성요소가 시스템에 접속할 수는 있지만 언제 어떻게 그 구성요소를 사용할지는 고수준 구성요소가 결정한다. 의존성 부패를 방지한다.

** 의존성 부패: 어떤 고수준 구성요소가 저수준 구성요소에 의존하고, 그 저수준 구성요소는 다른 구성요소에 의존하여 의존성이 복잡하게 꼬여있는 상황

Coffee 클래스와 Tea 클래스 추상화

Abstract Class

  • Coffee와 Tea의 추상 클래스를 생성하고, 공통된 부분을 메소드로 구현한다.
  • 이때 공통된 알고리즘을 구현한 메소드를 템프릿 메소드라고 한다.
  • 고수준 구성요소로, 알고리즘을 어떻게 구현할 지를 결정한다.
public abstract class CaffeineBeverage{
	final void prepareRecipe() { // 공통된 부분
    	boilWater(); // 해당 클래스에서 구현
        brew();	// 서브클래스에서 구현
        pourInCup();
        addCondiments();
    }
    
    abstract void brew();
    abstract void addCondiments();
    
    void boilwater() {...}
    void pourInCup() {...}
}

Concrete Class

  • 각 클래스는 템플릿 메소드에서 요구하는 모든 단계를 제공해야 한다.
  • 호출 당하기 전까지는 추상클래스를 직접 호출하지 않는다.
// 추상 클래스를 상속받는다..
public class Tea extends CaffeineBeverage{
	public void brew() {...} // 추상 메서드 구현
    public void addCondiments() {...}
}
public class Coffee extends CaffeineBeverage{
	public void brew() {...} // 추상 메서드 구현
    public void addCondiments() {...}
}

장단점

장점

  • 템플릿 메소드를 구현한 클래스에서 작업을 처리하여 알고리즘을 독점할 수 있다.
  • 서브클래스에서 코드를 재사용할 수 있다.
  • 알고리즘이 하나로 모여있어 코드 수정이 편리하다.
  • 다른 클래스도 쉽게 추가가 가능한 프레임워크를 제공한다.
  • 추상 클래스에 알고리즘에 집중되어 있고, 일부 구현만 서브 클래스에 의존한다.

단점

  • 정해진 알고리즘 골격에 의해 제한받을 수 있다.

후크

추상클래스에서 선언되지만 기본적인 내용만 구현되어 있거나 아무 코드도 들어있지 않은 메소드로 다양한 용도로 사용이 가능하다.

  • 서브클래스에서 후크를 오버라이드해서 원하는 기능을 구현해서 상황에 따라 알고리즘 진행을 변경할 수 있다.

적용

JFrame

  • 후크 메소드인 paint() 를 오버라이드 하면 특정 화면 영역에 특정 내용을 표시하는 JFrame 알고리즘에 사용자가 원하는 그래픽을 추가할 수 있다.
profile
개발자가 되기 위해 성장하는 중입니다.

0개의 댓글