Design Patterns - Command Pattern

다용도리모콘·2021년 3월 30일
0

Design Patterns

목록 보기
5/11

Command Pattern

요구사항을 캡슐화 하는 것으로 클라이언트와 리시버 사이의 의존성을 제거하는 패턴.

Code

//Command interface. 모든 Command는 이 interface를 구현해야 함.
public interface Command {
	public void excute ();
	public void undo ();
}

// Command 구현 클래스
public CommandImpl implements Command {
	public CommandImpl(...) {}
   	public void excute () {...}
	public void undo () {...}
}

//컨트롤러 클래스
public class Controller {
	Command command;//캡슐화 된 커맨드
    
	public void setCommand(Command command) {...}
	//커맨드 타입에 상관없이 excute라는 동일한 메소드를 실행하지만
	//실행되는 내용은 구현 클래스에 따라 다른게 포인트.
	public void action() {command.excute();}
}

활용 방법

  • Request Queue 구현
    Request라는 커맨드 인터페이스를 만들어 다양한 Request를 큐에서 받아 직렬, 병렬로 처리할 수 있음.
  • Request Logging 구현
    커맨드 인터페이스에 store, load 함수를 추가해서 커맨드 실행마다 저장, 특정 시점을 기준으로 하는 복구가 가능하게 구현할 수 있음.

0개의 댓글