2024년 6월 26일 수요일 개발일지 / 커맨드 패턴에 대해서

2024. 6. 26. 21:01나의 개발자 기록/본 캠프 개발 일지

2024년 6월 26일 수요일


What I did today

 

 

오늘은 스탠다드반 시간이 끝나고 나서 팀원분들이랑 최종적으로 회의를 진행했습니다. 어제 팀원 중 한 분이 시연 영상 때문에 늦은 밤까지 제작하시느라 고생 많으셨었고, 거진 마무리를 다 하셨기 때문에 오늘 팀 프로젝트 과제 제출할 때까지에는 시간이 남아 있었습니다. 일단 서로 다양한 이야기를 하다가 팀장님께서 ReadMe를 마지막으로 수정한 다음에 최종 제출을 했고, 남는 시간에는 팀원끼리 이야기하면서 시간을 보냈습니다.

 

오후에는 각 조별로 발표를 진행했는데, 캠프를 시작하고나서 많은 시간이 지나니까 다들 실력이 장난 아닌 것 같았습니다. 재밌어 보이는 게임도 만드신 조도 있고, 무서운 공포게임을 만드신 조도 있어서 굉장히 재미있고 의미 있던 시간이었습니다. 기회가 된다면 다른 분들이 만드신 게임의 코드를 보고 싶지만, 시간이 많이 없기 때문에 이건 다음 기회에 보는 걸로 해야겠습니다. 발표가 끝난 뒤의 남는 시간에는 다들 공부하기 싫어 병에 걸리셔서 서로 게임 이야기를 한다거나 다른 이야기를 하면서 시간을 보냈고, 저녁 시간이 찾아와 저녁을 먹었습니다.

 

저녁 7시부터는 스탠다드반 특강이 있었는데, 이번 강의는 유니티 에디터를 커스텀하는 특강이었습니다. 스크립트에서 UnityEditor를 사용해서 GUI, GUILayout, EditorGUI, EditorGUILayout 등등 에디터에서 자신만의 창을 커스텀할 수 있는 기능이 있다는 것을 알게 되었습니다. 게임 개발에 도움이 되는 부분만 먼저 습득하고, 기회가 된다면 다양한 기능을 찾아봐야겠네요. 하여튼 간에 발표가 끝나고 나서는 TIL에 쓸 내용에 대해서 고민하다가 디자인 패턴 중에서 커맨드 패턴에 대해서 공부할 겸 블로그에 남기려고 쓰게 됐고, 이번 팀원분들과 마지막으로 인사를 나눈 뒤 오늘 하루를 마무리했습니다. 


커맨드 패턴에 대해서

 

커맨드 패턴 (Command Pattern) 이란?

 

커맨드 패턴(Command Pattern)은 행동(명령)을 객체로 캡슐화하여 요청자와 수행자를 분리하는 디자인 패턴이다. 이는 명령을 큐에 저장하거나, 실행 취소 기능을 구현하거나, 명령의 기록을 관리하는 데 유용하다.


커맨드 패턴의 주요 요소

 

1. 커맨드 인터페이스 (Command Interface) : 실행 메서드( Execute(); )를 정의한다.

2. 구체적인 커맨드 클래스 ( Concrete Command Classes) : 커맨드 인터페이스를 구현한다. 이 클래스는 요청을 처리할 리시버 객체와 메서드를 포함한다.

3. 리시버 (Receiver) : 실제 요청을 수행하는 객체이다.

4. 인보커 (Invoker) : 커맨드 객체를 호출하는 객체이다. 이 객체는 커맨드를 실행하거나 취소할 수 있는 인터페이스를 제공한다.

5. 클라이언트 (Client) : 인보터 객체와 구체적인 커맨드 객체를 생성 및 설정한다.


커맨드 패턴의 장점

 

 

1. 유연성 증가: 요청을 객체로 캡슐화하므로 다양한 요청을 쉽게 추가할 수 있습니다.

2. 확장성: 새로운 커맨드를 쉽게 추가할 수 있습니다.

3. 명령의 큐잉 및 로깅: 요청을 큐에 저장하거나 로깅하여 이후에 처리할 수 있습니다.

4. 작업 취소 및 재실행: 명령의 상태를 저장하여 취소하거나 재실행할 수 있습니다.