[python] 템플릿 메서드 패턴

템플릿 메서드 패턴은 소프트웨어 디자인 패턴 중 하나로, 알고리즘의 구조를 정의하는 추상 클래스를 만들고 해당 알고리즘의 일부 단계를 서브클래스로 위임하는 방법입니다. 이러한 패턴은 코드의 재사용성과 유연성을 높여주며, 변경에 대한 영향을 최소화할 수 있습니다.

구조

템플릿 메서드 패턴은 다음과 같은 구조로 이루어져 있습니다:

템플릿 메서드 패턴

  1. AbstractClass: 추상 클래스로, 알고리즘의 구조를 정의하는 추상 메서드와 템플릿 메서드를 포함합니다.
  2. ConcreteClass: 추상 클래스를 상속받아 구체적인 알고리즘을 구현하는 클래스입니다.

예제 코드

다음은 Python에서 템플릿 메서드 패턴을 사용한 예제 코드입니다:

from abc import ABC, abstractmethod

class AbstractClass(ABC):

    def template_method(self):
        self.step_one()
        self.step_two()

    @abstractmethod
    def step_one(self):
        pass

    @abstractmethod
    def step_two(self):
        pass

class ConcreteClass(AbstractClass):

    def step_one(self):
        print("Step one")

    def step_two(self):
        print("Step two")

if __name__ == "__main__":
    obj = ConcreteClass()
    obj.template_method()

위 예제 코드에서는 AbstractClass라는 추상 클래스를 정의하고, template_method라는 템플릿 메서드를 구현했습니다. 이 메서드는 step_onestep_two라는 추상 메서드를 순서대로 호출합니다. ConcreteClassAbstractClass를 상속받아 step_onestep_two를 구체적으로 구현한 클래스입니다. ConcreteClass의 인스턴스를 생성하고 template_method를 호출하면, step_onestep_two가 순서대로 실행되는 것을 확인할 수 있습니다.

요약

템플릿 메서드 패턴은 알고리즘의 구조를 정의하는 추상 클래스와 해당 알고리즘의 일부 단계를 구체적으로 구현하는 서브클래스로 이루어집니다. 이 패턴은 코드 재사용성과 변경에 대한 영향의 최소화를 도와줍니다. Python에서 템플릿 메서드 패턴은 추상 클래스와 추상 메서드를 사용하여 구현할 수 있습니다.

참고 자료