모각코
[모각코 1회차] 숫자야구
moonstal
2022. 7. 8. 14:02
목표: 자바 실습프로젝트 실습 및 복습
개인회고
전에도 숫자야구게임을 만들어 본적이 있었는데 오늘 들은 강의는 내가 짠 코드랑은 완전 달랐다. 숫자야구에 의존성 주입이 적용되는 것을 보면서 DI에 대해 더 잘 이해할 수 있었고 람다와 스트림을 반복적으로 사용해보면서 조금 익숙해진 것 같다. 겉으로는 같은 프로그램 같아도 안에 코드는 정말 다양하게 짜여질 수 있다는 걸 다시한번 깨달았다.
숫자야구
요구사항
- 3자리 숫자(확장가능)
- 중복숫자 제거
- 숫자는 1~9
- 화면은 콘솔
구현
- baseball
- engine: 엔진레이어
- BaseBall
- @AllArgsConstructor를 통해 NumberGenerator,Input,Output 의존성 주입 받는다.
- COUNT_OF_NUMBERS를 통해 확장 가능
- run() 실행
- parse(): 숫자유효성 검사, Integer[] 생성
- ballCount()
- new AtomicInteger() 멀티 쓰레드 고려
- Numbers의 indexedForEach구현: 결과 담기
- io: 인터페이스로 생성
- Input
- Output
- NumberGenerator: 게임숫자 받아 Numbers 리턴
- model
- BallCount: strike와 ball의 개수
- Numbers: 배열길이만큼 두개 Integer받아 consumer의 accept구현
- BaseBall
- App: 애플리케이션 레이어
- NumberGenerator로 추상화해서 FakerNumberGenerator/HackNumberGenerator갈아 끼울 수 있음
- BaseBall생성하면서 의존성 주입: 결합도 낮춤
- Console: Input, Output의 메서드 구현
- FakerNumberGenerator/HackNumberGenerator: NumberGenerator의 generate를 구현
- engine: 엔진레이어
https://github.com/moonstal1506/programmers_study/tree/main/BaseBall
@프로그래머스 미니 데브코스 & CNU SW Academy 강의 내용 정리