본문 바로가기

Design Pattern

[Design pattern] Command Processor

Command Processor

서비스에 대한 요청과 서비스의 실행을 분리한다.

요청을 독립적인 객체로 관리하며 실행을 스케줄링 한다.

작업취소에 대비해 요청 객체를 저장하는 추가적인 서비스를 제공한다.


문제

사용자들마다 나름의 방식으로 애플리케이션을 다루고 싶어한다.

애플리케이션의 확장은 기존에 있던 코드에 영향을 미쳐서는 안 된다.

작업취소와 같은 추가 서비스는 모든 요청에 대해서 일관적으로 구현되어야 한다.


해법

커맨드 프로세서가 모든 커맨드 개체들을 다룬다.

커맨드 프로세서는 명령의 실행을 스케줄링하고 추후에 있을지 모를 작업취소에 대비해 명령을 저장한다.


구조

동작



구현

추상 커맨드 컴포넌트의 인터페이스를 정의한다.

각 유형마다 커맨드 컴포넌트를 설계한다.

순차적으로 수행되는 몇몇 명령들을 조합한 매크로 명령을 제공함으로써 유연성을 증가 시킨다.

컨트롤러 컴포넌트를 구현한다.

커맨드 프로세서의 추가 서비스에 대한 액세스를 구현한다.

커맨드 프로세서 컴포넌트를 구현한다.


장점

요청을 활성화하는 방법에 유연성이 제공된다.

요청의 개수에 기능에 대해서도 유연성이 제공된다. 

실행과 관련된 서비스들을 한 곳에 프로그래밍 할 수 있다.

애플리케이션 레벨에서 시험용이성이 제공된다.

병행성이 지원된다.


단점

효율성이 덜어진다.

커맨드 클래스가 무수히 늘어날 가능성이 있다.

커맨드가 매개변수를 가져올 때 복잡성이 야기될 수 있다.

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

[Design pattern] PAC  (0) 2013.02.21
[Design pattern] MVC  (0) 2013.02.21
[Design pattern] Proxy  (0) 2013.02.21
[Design pattern] Master-Slave  (0) 2013.02.21
[Design pattern] Whole-Part  (0) 2013.02.21