목표: 자바 실습프로젝트 실습 및 복습
개인회고
전에도 숫자야구게임을 만들어 본적이 있었는데 오늘 들은 강의는 내가 짠 코드랑은 완전 달랐다. 숫자야구에 의존성 주입이 적용되는 것을 보면서 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 강의 내용 정리
'모각코' 카테고리의 다른 글
[모각코 6회차] 주문관리 API (0) | 2022.08.11 |
---|---|
[모각코 5회차] SPA와 CORS (0) | 2022.08.04 |
[모각코 4회차] 스프링 AOP와 트랜잭션 (0) | 2022.07.29 |
[모각코 3회차] logback 설정 (0) | 2022.07.22 |
[모각코 2회차] MySQL 고급기능 정리 (0) | 2022.07.15 |