2016년 4월 1일 금요일

Design Pattern Digest - 22. Command

이글은 책 "Java언어로 배우는 디자인 패턴 입문"을 읽고 쓴 요약입니다. 
나만 이해하도록 불친절하게 작성되어 있습니다. 
자세한 내용은 책을 보세요. 


Command



  • 명령을 객체화 시켜서 관리하는 패턴. Memento와 마찬가지로 프로그램의 undo, redo, history 기능 구현이 목적인데, Memento가 상태를 저장한다면 Command는 명령 이력을 저장 한다.
  • ConcreteCommand는 명령을 수행하는데 필요한 최소한의 정보를 가지고 있고 실제로 명령을 실현하기 위해서는 Receiver가 필요하다. 
  • 명령을 수행하는 지시는 Invoker가 하는데 왜 Invoker가 ConcreteCommand를 직접 보지 않고 Command라는 interface를 보는지는 정확히 알 수 없다. 아마 여러 종류의 command가 있는데 execute() 메소드로 다루기 위함일 것이다. 
  • [예제] (예제가 조금 어려움) Receiver는 Canvas이고 ConcreteCommand는 point를 저장한다. Client이자 Invoker인 main 메소드는 명령을 drawing 명령을 내리거나 clear를 한다. 특이한 점은 command history를 MacroCommand라 하여 또하나의 ConcreteCommand로 만들었다. 


댓글 없음:

댓글 쓰기