**StudyCafeLockerPass
**의 이름을 **LockerPass
**로 변경했습니다. 아래 내용에 두 단어가 혼용되어 있으니 이 점 양해하고 읽어주세요.
StudyCafePassMachine - run()
**StudyCafePassType
별로 분기되어있고 분기별 각각의 로직이 있었지만 겹치는 부분이 많아 메서드getPassCandidates(StudyCafePassType)
**로 추출해 if문 안의 내용을 줄였습니다.
getPassCandidates(StudyCafePassType)
이전과 같은 맥락으로 **lockerPass
**를 얻는 과정을 메서드 **getStudyCafeLockerPass()
**로 추출하여 추상화 하였고, if문 분기를 없앴습니다.
StudyCafePass
가 어떤 타입이든 로직이 똑같기 때문에 if문을 없애려고 했습니다. 다만 사물함을 등록할 수 있으면 물어보고 아니면 lockerPass에 null 값을 할당해showPassOrderSummary(StudyCafePass, LockerPass)
에 전달해주면 되었습니다.
그리고 **studyCafePass
**와 **lockerPass
**를 얻는 과정을 모두 추상화하여 메서드를 추출했습니다.
getStudyCafePass(StudyCafePassType), getStudyCafeLockerPass(StudyCafePassType, StudyCafePass)
getStudyCafePassCandidates(StudyCafePassType passType)
getLockerPassForFixedType(StudyCafePass studyCafePass)
**StudyCafePassMachine
**에서 모든 로직이 다 있는 게 하나의 클래스가 과한 책임을 가지고 있다고 판단해서 객체를 분리했습니다. StudyCafePassMachine
는 전체적인 흐름만 담당하고 pass를 얻는 과정들은 **PassGetter
**라는 클래스를 새로 만들어서 담당하게 했습니다.
StudyCafePassMachine - run()
PassGetter
필드 & 생성자. **inputHandler
**와 **outputHandler
**는 다시 생성할 필요 없이 StudyCafePassMachine
에서 주입