[python] 커맨드 패턴

커맨드 패턴은 객체 지향 디자인 패턴 중 하나로, 요청을 객체로 캡슐화하여 요청을 매개 변수로 전달하고, 실행될 메소드를 지정하여 요청의 발신측과 수신측을 분리합니다. 이런 방식으로 유연한 실행과 이력 추적, 취소 등의 기능을 제공합니다.

이 패턴은 다양한 상황에서 사용 가능하며, 특히 다음과 같은 경우에 유용합니다:

커맨드 패턴의 구조

커맨드 패턴은 다음과 같은 주요 구성요소로 이루어져 있습니다:

파이썬에서의 커맨드 패턴 구현

파이썬에서는 커맨드 패턴을 간단하게 구현할 수 있습니다. 아래는 간단한 예제 코드입니다:

from abc import ABC, abstractmethod

class Command(ABC):
    @abstractmethod
    def execute(self):
        pass

class ConcreteCommand(Command):
    def __init__(self, receiver):
        self.receiver = receiver

    def execute(self):
        self.receiver.action()

class Receiver:
    def action(self):
        print("실제로 요청을 처리하는 객체의 동작을 수행합니다.")

class Invoker:
    def __init__(self):
        self.command = None

    def set_command(self, command):
        self.command = command

    def execute_command(self):
        self.command.execute()

if __name__ == "__main__":
    receiver = Receiver()
    command = ConcreteCommand(receiver)
    invoker = Invoker()

    invoker.set_command(command)
    invoker.execute_command()

위의 예제 코드는 커맨드 패턴을 파이썬으로 구현한 것으로, Receiver 클래스에서 실제 요청을 처리하는 로직이 작성되고, Invoker 클래스에서는 해당 요청을 전달하고 실행하는 역할을 합니다. Client는 Receiver 객체와 ConcreteCommand 객체를 생성하여 요청을 보내게 됩니다.

이를 통해 요청의 수신측과 발신측을 분리하고, 유연한 기능 확장과 이력 추적, 취소 등을 구현할 수 있습니다.

참고 자료