[typescript] 수행할 작업을 객체로 캡슐화하여 나중에 실행하는 커맨드 패턴과 타입스크립트의 결합 사례

커맨드 패턴은 특정 작업을 객체로 캡슐화하여 실행과 연관된 메타데이터를 제공하는 행동 패턴입니다. 이 패턴은 실행될 작업에 대한 정보를 포함하는 객체를 만들고, 나중에 실행될 때 이 객체를 호출합니다.

커맨드 패턴의 구조

커맨드 패턴의 구조는 다음과 같습니다.

타입스크립트로 커맨드 패턴 구현하기

아래는 타입스크립트를 사용하여 간단한 커맨드 패턴을 구현한 예제 코드입니다.

interface Command {
  execute(): void;
}

class ConcreteCommand implements Command {
  private receiver: Receiver;

  constructor(receiver: Receiver) {
    this.receiver = receiver;
  }

  execute(): void {
    this.receiver.performAction();
  }
}

class Receiver {
  performAction(): void {
    console.log("작업을 수행합니다.");
  }
}

class Invoker {
  private command: Command;

  setCommand(command: Command): void {
    this.command = command;
  }

  executeCommand(): void {
    this.command.execute();
  }
}

// 사용 예제
const receiver = new Receiver();
const command = new ConcreteCommand(receiver);
const invoker = new Invoker();

invoker.setCommand(command);
invoker.executeCommand();

위 예제에서는 Command와 ConcreteCommand를 정의하고, Receiver 클래스를 사용하여 작업을 수행합니다.

타입스크립트와 커맨드 패턴의 결합 사례

타입스크립트의 강력한 타입 시스템과 인터페이스를 활용하여 커맨드 패턴을 구현하면, 코드의 유지 보수성과 가독성을 높일 수 있습니다. 또한, 커맨드 패턴을 사용하면 실행될 작업을 동적으로 변경하거나 취소할 수 있는 유연한 구조를 만들 수 있습니다.

결론

커맨드 패턴은 타입스크립트의 객체지향적인 특성과 잘 어울리며, 타입 안정성과 모듈화를 향상시킬 수 있습니다. 이 패턴을 효과적으로 활용하여 코드의 유연성과 확장성을 높일 수 있습니다.

참고문헌: