본문 바로가기
모각코

[모각코 1회차] 숫자야구

by moonstal 2022. 7. 8.

목표: 자바 실습프로젝트 실습 및 복습

개인회고

전에도 숫자야구게임을 만들어 본적이 있었는데 오늘 들은 강의는 내가 짠 코드랑은 완전 달랐다. 숫자야구에 의존성 주입이 적용되는 것을 보면서 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구현
    • App: 애플리케이션 레이어
      • NumberGenerator로 추상화해서 FakerNumberGenerator/HackNumberGenerator갈아 끼울 수 있음
      • BaseBall생성하면서 의존성 주입: 결합도 낮춤
    • Console: Input, Output의 메서드 구현
    • FakerNumberGenerator/HackNumberGenerator: NumberGenerator의 generate를 구현

https://github.com/moonstal1506/programmers_study/tree/main/BaseBall
@프로그래머스 미니 데브코스 & CNU SW Academy 강의 내용 정리