[Design Pattern]커맨드 패턴

디자인 패턴의 커맨드 패턴 정리

Command

  • 메소드 호출을 캡슐화
  • 요청 내역을 객체로 캡슐화하여 클라이언트를 서로 다른 요청 내역에 따라 매개변수화할 수 있다. 요청을 큐에 저장하거나 로그로 기록할 수도 있고 작업취소 기능을 지원할 수도 있다.
  • 메타 커맨드 패턴을 이용하면 명령들로 이루어진 매크로를 만들어서 여러 개의 명령을 한 번에 실행할 수 있다.

command

  • 커맨드 패턴을 이용하면 요청을 하는 객체그 요청을 수행하는 객체분리시킬 수 있다.
  • 이렇게 분리시키는 과정의 중심에는 커맨드 객체가 있으며, 이 객체가 행동이 들어있는 리시버를 캡슐화한다.
  • 인보커에서는 요청을 할 때는 커맨드 객체의 execute() 메소드를 호출하면 됨. execute() 메소드에서는 리시버에 있는 행동을 호출한다.
  • 인보커는 커맨드를 통해서 매개변수화될 수 있다. 이런 실행중에 동적으로 설정할 수도 있음.
  • execute() 메소드가 마지막으로 호출되기 전의 기존 상태로 되돌리기 위한 작업취소 메소드를 구현하면 커맨드 패턴을 통해서 작업취소 기능을 지원할 수도 있다.
  • 매크로 커맨드는 커맨드를 확장해서 여러 개의 커맨드를 한꺼번에 호출할 수 있게 해주는 간단한 방법이다. 매크로 커맨드에서도 어렵지 않게 작업취소 기능을 지원할 수 있다.
  • 요청 자체를 리시버한텐 넘기지 않고 자기가 처리하는 “스마트” 커맨드 객체를 사용하는 경우도 종종 있다.
  • 커맨드 패턴을 활용해 로그 및 트랜잭션 시스템을 구현하는 것도 가능