본문 바로가기
Study/Java

[JAVA] template method패턴

by novxerim 2023. 6. 19.

Template Method 패턴은 객체지향 디자인 패턴 중 하나로, 알고리즘의 구조를 정의하고 일부 단계를 서브클래스에서 구체화하는 방법이다.
이 패턴은 알고리즘의 공통 구조를 부모 클래스에서 정의하고, 일부 단계를 서브클래스에서 오버라이딩하여 구체화한다.

Template Method 패턴은 다음과 같은 구성 요소로 구성된다.


1) Abstract Class (추상 클래스)

  알고리즘의 공통 구조를 정의하는 추상 클래스이다. 이 클래스에는 Template Method라는 이름의 메서드가 포함되며, 이 메서드는 알고리즘의 구조를 정의하는데 사용된다. Template Method는 일련의 단계를 순서대로 호출하며, 일부 단계는 추상 메서드나 기본 구현 메서드로 정의된다.

2) Concrete Classes (구체 클래스)

  추상 클래스를 상속받아 구현하는 구체 클래스이다. 이 클래스들은 추상 메서드를 오버라이딩하여 알고리즘의 일부 단계를 구체화한다. 따라서 구체 클래스들은 알고리즘의 공통 구조를 상속받아 필요한 부분을 재정의하여 개별적인 동작을 수행한다.

Template Method 패턴은 상위 수준의 알고리즘을 정의하고 하위 클래스에서 세부적인 동작을 구현하는 경우에 유용하다.
이 패턴을 사용하면 알고리즘의 구조를 재사용하고, 변하지 않는 부분을 추상화하여 일반화할 수 있다.
또한, 다형성을 통해 서브클래스의 다양한 구현을 지원할 수 있다.

예를 들어, 문서 생성을 위한 Template Method 패턴을 사용하는 경우, 
Abstract Class는 문서의 기본 구조를 정의하고, Concrete Classes는 특정 유형의 문서에 대한 세부적인 내용을 구현힌다.
이렇게 하면 문서의 공통 구조를 한 곳에서 관리하면서도 다양한 종류의 문서를 생성할 수 있다.

이렇게 Template Method 패턴은 템플릿 메서드를 통해 공통된 알고리즘을 재사용하고, 상속을 통해 변하는 부분을 캡슐화할 수 있어 유연하고 확장 가능한 디자인을 제공한다.

'Study > Java' 카테고리의 다른 글

[Clean-Code] Chapter. 4-6  (0) 2023.06.21
[Clean-Code] Chapter. 1-3  (0) 2023.06.20
[JAVA] BUILD-OPERATE-CHECK 패턴  (0) 2023.06.17
[JAVA] given-when-then 관례  (0) 2023.06.16
[JAVA] 의존성이라는 비용이 이익보다 크다? Mock?  (0) 2023.06.15

댓글