2009년 12월 9일 수요일

Command Pattern

Command Pattern

명령을 클래스로 표현하기
Command : 명령, Event
이벤트 구동 프로그래밍 에서 사용되는 이벤트와 같은 의미

클래스가 일을 실행할 때에는 자신의 클래스나 다른 클래스의 메소드를 호출합니다. 메소드를 호출한 결과는 객체의 상태에 반영되지만, 일의 이력은 어디에도 남지 않습니다.
이때 이 일을 실행하시오 라는 명령을 표현하는 클래스가 있으면 편리합니다. 실행하고 싶은 일을 메소드를 호출하는 동적인 처리로 표현하는 것이 아니라 명령을 나타내는 클래스의 인스턴스로 하나의 물건 처럼 표현할 수 있기 때문입니다. 이력을 관리하고 싶을 때에는 그 인스턴스의 집합을 관리하면 됩니다. 명령의 집합을 저장해두면 같은 명령을 재 실행할 수 도 있고, 또는 복수의 명령을 모아서 새로운 명령으로 재이용할 수도 있습니다.

 

예제프로그램


Command Pattern의 등장인물

Command의 역할
: 명령의 인터페이스를 정의
  예제프로그램에서 Command 인터페이스

ConcreteCommand의 역할
: Command역할의 인터페이스를 실제로 구현하고 있는 역할
  예제프로그램에서 MacroCommand 클래스와 DrawCommand 클래스

Receiver의 역할
: Command 역할이 명령을 실행할 때 대상이 되는 역할. 명령을 받아들이는 수신자
  예제프로그램에서 DrawCommand의 명령을 받아들이고 있는 DrawPanel클래스

Client의 역할
: ConcreCommand 역할을 생성하고그 사이에 Receiver 역할을 할당
  예제프로그램에서 Main 클래스

Invoker(기동자)의 역할
: 명령의 행동을 개시하는 역할
  Command역할에서 정의되는 인터페이스를 호출하는 역할이 됩니다.
  예제프로그램에서 Main클래스와 DrawPanel 클래스가 이 역할을 합니다. 이 두개의 클래스가
  Command 인터페이스의 execute 메소드를 호출하고 있습니다. Main 클래스는 Client 역할과
  Invoker 역할 둘 모두 수행합니다.


 

출처 : Java 언어로 배우는 디자인 패턴 입문

댓글 없음:

댓글 쓰기