👀 목차
- 닌텐도에 커맨드 패턴을 적용하자.
- 파일 생성, 제거에 매크로 커맨드 패턴을 적용하자.
1. 닌텐도에 적용해 보자.
닌텐도 스위치에 커맨드 패턴을 적용해보자. 닌텐도 스위치 개발자라고 생각하자.
1-1. 고려 사항
1. 게임 별로 닌텐도 버튼 별 동작을 적용시켜야 한다.
2. 사용자의 버튼을 기록하여 갑자기 닌텐도가 꺼져도 원복이 가능해야한다.
3. 여기서는 간단하게 하기 위해 8가지 버튼만 존재한다고 가정 (왼쪽 4개 + 오른쪽 4개 버튼)
> 테스트는 간단히 4개만 셋팅하겠습니다.
https://brunch.co.kr/@wikitree/2809 참고 이미지
1-2. 커맨드 기능 정리
- 리시버: 젤다-더 와일드, 젤다-꿈꾸는 섬, 동물의 숲, 마리오 카트 등이 존재
- 클라이언트: 젤다1 개발자, 젤다2 개발자, 동물의 숲 개발자 / 사용자
- 커맨드: 동물의 숲 의 경우, 1) 위로 가기 2) 오른쪽으로 가기 3) 왼쪽으로 가기 4) 뒤로 가기 5) 말걸기 6) 뛰기 등 존재
- 인보커: 닌텐도 스위치
1-3. UML
1-4. 소스 코드
1) 커맨드- 오른쪽으로 가기, 왼쪽으로 가기, 앞으로 가기, 뒤로 가기 커맨드 정의
2) 리시버 - 실제 작업자
여기서는 동물의 숲 게임만 정의함
3) 인보커 - 닌텐도 머신
4) 클라이언트
2. 파일 생성 및 삭제를 커맨드에 적용하자.
파일 생성 및 제거하는 작업을 매크로 패턴에 적용해 보자. 추가적으로 UNDO 작업도 넣을 것이다.
2-1. 기능 정리
- 커맨드: ls 커맨드 , touch 커맨드, rm 커맨드 존재 > exexute(), undo() 정의
- 리시버: ls, touch, rm 실제 작업자
- 인보커: 커맨드 세팅과 커맨드의 execute() 호출하여 실제 작업, undo() 호출하여 작업 취소 기능
- 클라이언트: 파일 생성, 제거 작업을 진행
2-2. UML
2-3.소스 코드
1) 커맨드 클래스 정의
2) 리시버 - 실제 작업자
3) Invoker
4) client
소스 코드
참고
- python design patterns 책