모든 state 빌드를 마치고, 테스트 구동을 하는 도중에 버그를 두개 발견했다.
1. 결제 완료 시 5초 뒤에 메인화면으로 돌아가게 하는 로직이 고장남.
5초 뒤에 mainstate가 되긴 하는데, 화면이 안뜬다. 그리고 빈 화면에서 input이 받아진다.
원인은 두 가지로 볼 수 있을 것 같은데
1. sleep의 특성을 제대로 이해하지 못한 채로 사용해서 오류가 발생함
2. Main.js의 로직을 무시함
CompletedState.java로 state를 따로 관리하고 있었는데 그냥 Payment에 통합시키는 것이 깔끔하기도 하고 main과 충돌(handleInput으로 인해 생기는 오류)도 없을 듯 해서 병합시켰다.
병합시켜주니 정상적으로 작동한다. ㅎㅎ
과도한 class 분리 때문에 main.js에서 state패턴이 깔끔하게 동작하지 않은 것이 원인이었다.
2. 빌더에서 build()를 통해 생성된 Order객체에 값이 정상적으로 반영되지 않음.
결제 완료 시 값이 업데이트가 되지 않는다.
저번 계산기때처럼 값을 불러오는 방식에 문제가 있는 듯 하다.
statehandler의 displayorder 메서드가 항상 업데이트된 값을 불러오도록 해봤다.
됐다. 항상 가변값을 불러올 땐 메서드가 어떻게 호출되는지 확인하자!
'개인 프로젝트 > kiosk-project' 카테고리의 다른 글
기존 코드에 Stream 반영하기 <5> (0) | 2024.11.25 |
---|---|
Builder pattern<3> (1) | 2024.11.24 |
State pattern <2> (0) | 2024.11.24 |