저번에도 배웠던 커맨드 패턴에 대해 알아보자
오늘 TIL은 나눠서 작성 예정
명령을 객체로 캡슐화하는 디자인 패턴
이전부터 종종 사용했지만 한 번 더 알아보고 가자.
명령 객체를 보유하고 있다가, 특정 시점에 실행(Execute)하는 객체.
명령을 언제 실행할지, 실행 내역을 저장할지(Undo/Redo), 대기열에 넣을지 결정.
예시: 키 입력 감지(핸들러 등), 클릭 감지, 턴 관리
실제 로직(알고리즘)을 가지고 있는 객체.
기능이 실제로 어떻게 동작하는지 구체적인 코드로 구현.
예시:PlayerController
Receiver의 특정 메서드 호출을 캡슐화한 객체.
Invoker와 Receiver 사이의 중계 역할.
예시: JumpCommand (내부에서 player.Jump() 호출)
Invoker가 실행한 명령 객체들을 저장하고 관리하는 객체.
(표준 GoF 패턴에는 없지만, 실제 구현 시 Undo/Redo 등의 구현을 위해 필요한 요소)
역할: 실행된 Command를 스택, 리스트 등에 저장.
예시
만약 사용자가 버튼을 누르면 점프하는 메서드가 존재한다면?
아래와 같은 흐름으로 동작.
JumpCommand 를 생성하고 Execute() 요청Recorder 가 있으면 해당 명령을 저장Receiver를 찾아 메서드 호출
커맨드 패턴의 로직 고도화에는
커맨드의 오브젝트 풀링 등이 존재한다.
이번 기회에 프로젝트에서 활용처가 있는 지 확인해보고
그에 맞게 활용해보자.
어드레서블은 내일 작성 마무리하고 업로드.