excute
매서드를 실행한다.DesignActionDC.dispatch(action)
이라고 볼 수 있다.
DesignActionDC 의 dispatch 매서드는 커맨드 패턴의 excute 매서드와 같다고 볼 수 있다.
그 이유는...
외부에서는 내부 로직은 모른 채 dispatch 매서드만 호출하여 원하는 결과를 만들어내기 때문이다.
따라서 DesignActionDC 는 커맨드이다.
HeadFirst 책에서는 더 나아가 커맨드와 부가적으로 리시버라는 개념을 알려주었다.
리시버는 특정 상황에 실행되어 커맨드를 호출하는 역할을 한다.
현재 우리 로직은.. DesignActionDC.dispatch(someAction)
형태로서, 원하는 액션을 dispatch 매서드의 parameter 로 전달하는데 사실 각 액션마다 커맨드를 만드는게 HeadFirst 책에서 말한 커맨드에 가깝긴 하다.
예를들어..
요소 이동 액션을 실행할때
DesignActionDC.dispatch(new ItemMoveAction())
으로 실행하지 않고,
ItemMoveActionCommand.execute()
로 실행하는 것 말이다.
하지만 우리 로직은 추상화된 DesignActionDC 에서 추상화된 action 들을 관리하고 있으므로 우리 로직이 액션들의 상태 관리 측면에서는 보일러 플레이트가 적다는 이점이 있는 것 같다.