728x90
반응형

Command Pattern이란?

 

GOF 정의에 따르면 Command Pattern은 Request를 Object(i.e. a command)로 캡슐화하고 Invoker에게 전달하는데 사용된다.

 

(* Receiver: 수신자 Invoker: 호출자)

 

Client는  Command Object를 만든다. Command Object에 Request가 있다. Receiver Object Reference도 있다.

Receiver Object는 Request를 처리 할 객체 일 뿐이다. Command Object에는 Execute 메소드도 있다.

Ececute 메소드는 Receiver Object 메소드를 호출하고 Receiver Object 메소드는Request를 처리한다.

 

Command Pattern에 따라 Command ObjectInvoker Object에 전달된다.

Invoker는 Request를 처리하는 방법을 모른다. Invoker가 할 일은 Command Objcet의 Execute 메소드를 호출하는 것이다. Command Object의 실행 메소드는 Receiver Object 메소드를 호출하고 Receiver Object 메소드는 Request를 처리하는데 필요한 작업을 수행한다.

Command Patern 작동 방식

 

Command Pattern 예시

식당을 예로 들면 식당에는 웨이터가 있을것이다. 웨이터가 할 일은 고객으로부터 주문을 받는 것이다.고객이 원하는 음식을 웨이터에게 알여줄 것이다. 웨이터가 체크리스트에 기록을 한다.그런 다음 웨이터는 체크리스트를 요리사에게 전달한다. 요리사는 음식을 준비하여 웨이터에게 전달한다.웨이터는 받은 음식을 손님에게 전달한다.'

 

고객:  Client음식: Command웨이터: invoker

 

웨이터는 음식을 요리하는 방법을 모른다. 따라서 웨이터는 Request를 Receiver에게 준다.즉, 요리사는 음식을 준비하고 웨이터에게 음식을 주면 웨이터는 고객에게 준다.

 

 Command Pattern 구현

 

  1. Open Command

  2. Save Command

  3. Close Command


Reference
728x90
반응형

+ Recent posts