커맨드 패턴

요청(명령)을 객체로 캡슐화하여, 명령을 컬렉션에 저장하고 실행 시점을 제어하거나 실행 취소 및 로깅등을 활용하는 패턴

  • 어떤 작업을 요청하는 부분(Invoker)과 그 작업을 처리하는 부분(Receiver)을 분리

  • 요청을 커맨드 객체로 캡슐화하여 실행, 취소, 로깅, 큐잉등을 유연하게 처리

  • 커맨드 객체: 특정 행동을 특정 리시버와 연결해서 요청을 캡슐화한 객체

  • 리시버 객체: 실제 비즈니스 로직을 수행하는 객체, 커맨드는 리시버의 메서드를 호출만함

  • 인보커 객체: 커맨드를 실행시키는 역할로, 커맨드가 무엇을 하는지 관심없고 실행만함

매크로 커맨드 패턴 (Macro Command Pattern)

  • 여러 커맨드를 하나의 커맨드처럼 묶어서 처리하는 패턴 (일괄 실행, 일괄 취소)


1. Command 인터페이스 정의

interface Command {
  execute(): void
  undo(): void
}

2. Receiver 객체 정의

class Light {
  on() {
    console.log("Light On")
  }
  
  off() {
    console.log("Light Off")
  }
}

3. 구체적인 Command 객체 정의

4. Invoker 객체 정의

5. 클라이언트 코드

Last updated