2009. 9. 18. 14:54 Programming/Design Pattern

커맨드 패턴을 이용하면 요구사항을 객체로 캡슐화할 수 있으며, 매개변수를 써서 여러가지 다른 요구 사항을 집어 넣을 수도 있다.
또한 요청 내역을 큐에 저장하거나 로그로 기록할 수도 있으며, 작업취소 기능도 지원 한다.

활용성
Command 객체는 액션이 객체내에서 발생했을때 호출되는 Execute() 메소드를 가지고 있다. 요구되는 액션은 Command 객체를 상속받아 각각의 맞는 Execute() 메소드를 정의한다.
그러면 우리는 요구되는 엑션을 수행하는 각각의 객체에 대한 Execute 메소드를 제공할 수 있어, 그 것이 속해 있는 객체내에서 무엇을 할 것인가에 대한 정보를 유지할 수 있다.
Command 패턴의 중요한 목적은 프로그램을 유지하고 사용자 인터페이스 객체들을 완전히 분리하는 것이고 다른 객체들의 작업에 대해 알 필요가 없다.
사용자 인터페이스는 명령을 받고 Command 객체에게 어떤 종류의 의무든지 알려줄 수가 있다. 사용자 인터페이스는 어떤일을 해야할 지 알려고 하지 않아도 되고 알 필요도 없다.


public void actionPerformed(ActionEvent e) { Command cmd = (Command)e.getSource(); cmd.Execute();}





















  • Command : 오퍼레이션 수행에 필요한 인터페이스 선언
  • ConcreteCommand(PasteCommand, OpenCommand) : Receiver객체와 액션 간의 연결성을 정의한다. 또한 처리 객체에 정의된 오퍼레이션을 호출하도록 Execute를 구현한다.
  • Client(Application) : ConcreteCommand 객체를 생성하고 처리 객체로 정의 한다.
  • Invoker(MenuItem) : 명령어에게 처리를 수행할 것을 요청한다.
  • Receiver(Document, Application) : 요청에 관련된 오퍼레이션 수행방법을 알고 있다.


    [커맨드 패턴의 잇점을 정리하면...]


    1. 행동의 객체 취급
    2. 매크로 커맨드
    3. 큐잉
    4. 로깅
    5. undo


    - 이 종 화 (ingenuity.egloos.com) -


  • posted by 부풍