커맨드 패턴 (command pattern)

gak·2023년 2월 26일
0

커맨드 패턴


로직을 실행시키는 커맨더가 존재하고, 외부에서는 자세한 로직은 모른 채 커맨더의 excute 매서드를 실행한다.


DesignActionDC.dispatch(action) 이라고 볼 수 있다.

DesignActionDC 의 dispatch 매서드는 커맨드 패턴의 excute 매서드와 같다고 볼 수 있다.

그 이유는...
외부에서는 내부 로직은 모른 채 dispatch 매서드만 호출하여 원하는 결과를 만들어내기 때문이다.

따라서 DesignActionDC 는 커맨드이다.


HeadFirst 책에서는 더 나아가 커맨드와 부가적으로 리시버라는 개념을 알려주었다.
리시버는 특정 상황에 실행되어 커맨드를 호출하는 역할을 한다.

현재 우리 로직은.. DesignActionDC.dispatch(someAction) 형태로서, 원하는 액션을 dispatch 매서드의 parameter 로 전달하는데 사실 각 액션마다 커맨드를 만드는게 HeadFirst 책에서 말한 커맨드에 가깝긴 하다.

예를들어..

요소 이동 액션을 실행할때
DesignActionDC.dispatch(new ItemMoveAction()) 으로 실행하지 않고,
ItemMoveActionCommand.execute() 로 실행하는 것 말이다.

하지만 우리 로직은 추상화된 DesignActionDC 에서 추상화된 action 들을 관리하고 있으므로 우리 로직이 액션들의 상태 관리 측면에서는 보일러 플레이트가 적다는 이점이 있는 것 같다.

profile
Hello. I'm Front-End Developer Trying to Create Valuable Things.

0개의 댓글