본문 바로가기

Programming/Design Pattern

Command Pattern

1. 정의

 1) 요구사항(요청, 명령)을 객체로 캡슐화 시킴.

 2) 명령이 객체로 캡슐화 되기 때문에 큐에 넣거나 로그로 남길 수 있고, 작업 취소(undo) 기능 구현 가능

 

2. 문제

 1) 사용하려는 객체(명령)가 많고, API가 서로 다른 경우

 예) 홈 리모컨의 경우 차고문, 전등, TV, Stereo, 에어컨 등 사용해야 하는 객체가 너무 많고, 서로 다른 명령들로

      구성되어 있음

 

3. 해결방안

 1) 실행과 요청을 분리한다.(decoupling)

 예) 리모컨 --> 커맨드 클래스 <-- 업체에서 제공하는 실제 명령어

     리모컨은 커맨드 클래스에 대해서만 알고 있으면 됨

 

4. 사용 예제

 1) 홈 오토메이션 리모컨

Command Pattern의 Class diagram

Client : 커맨드 객체 생성 / 명령 하달을 위해 추상화된 <command interface>를 사용

Invoker : 명령을 받아서, 실행하기 위해 Command 인터페이스 연결(예 : swing 버튼 누르기)

Command : 어떤 receiver를 실행할 지 연결하는 클래스

Receiver : 실제 명령을 수행하는 클래스

'Programming > Design Pattern' 카테고리의 다른 글

Adapter Pattern  (0) 2019.12.31
Command Pattern 과제  (0) 2019.12.31
Singleton Pattern  (0) 2019.12.30
Factory Pattern  (0) 2019.12.27
Decorator Pattern 과제  (0) 2019.12.27