[python] 템플릿 메서드 패턴
템플릿 메서드 패턴은 소프트웨어 디자인 패턴 중 하나로, 알고리즘의 구조를 정의하는 추상 클래스를 만들고 해당 알고리즘의 일부 단계를 서브클래스로 위임하는 방법입니다. 이러한 패턴은 코드의 재사용성과 유연성을 높여주며, 변경에 대한 영향을 최소화할 수 있습니다.
구조
템플릿 메서드 패턴은 다음과 같은 구조로 이루어져 있습니다:
- AbstractClass: 추상 클래스로, 알고리즘의 구조를 정의하는 추상 메서드와 템플릿 메서드를 포함합니다.
- 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_one
과 step_two
라는 추상 메서드를 순서대로 호출합니다. ConcreteClass
는 AbstractClass
를 상속받아 step_one
과 step_two
를 구체적으로 구현한 클래스입니다. ConcreteClass
의 인스턴스를 생성하고 template_method
를 호출하면, step_one
과 step_two
가 순서대로 실행되는 것을 확인할 수 있습니다.
요약
템플릿 메서드 패턴은 알고리즘의 구조를 정의하는 추상 클래스와 해당 알고리즘의 일부 단계를 구체적으로 구현하는 서브클래스로 이루어집니다. 이 패턴은 코드 재사용성과 변경에 대한 영향의 최소화를 도와줍니다. Python에서 템플릿 메서드 패턴은 추상 클래스와 추상 메서드를 사용하여 구현할 수 있습니다.
참고 자료
- Design Patterns: Elements of Reusable Object-Oriented Software by Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides
- Template Method Pattern - Refactoring.Guru