우아한테크코스 level 1-4 Lotto 미션 회고 및 학습 프로필

우아한테크코스 level 1-4 Lotto 미션 회고 및 학습 프로필

2021, Apr 22    

와일더의 학습 프로필 🃏

[JDK] 함수형 인터페이스 - 3

내용

  • 게임의 상태를 커맨드를 입력받아 함수형 인터페이스로 처리하려는 시도를 했다.

  • Move 명령어 외의 다른 명령어는 굳이 BiConsumer 가 필요하지 않다고 판단하여 해당 기능을 적용하지는 않았다.

  • BiConsumer 사용법

    BiConsumer<T, U> biConsumer = (t, u) -> System.out.println(t + u); // t, u 를 사용하고 반환값은 없다.
    biConsumer.accept(value1, value2);
    

링크

함수형 인터페이스

[Design Pattern] 커맨드 패턴 - 4

내용

  • 함수형 인터페이스로 커맨드 처리를 하기에는 적절하지 않다는 판단에 다른 방식을 찾아보았다.
  • 해당 방식으로 설계하면 유연한 설계가 가능해보였다.
  • 게임을 종료(System.exit()) 하거나 Status 에서 출력을 해야하는 부분에서 난감한 상황이 발생했다.
    • 종료 부분은 System.exit(0) 으로 처리했고, 출력은 모든 명령어를 입력하면 그에 맞는 String 을 반환하여 Controller 에서 OuputView 로 출력하도록 했다.

링크

커맨드 패턴

[Design Pattern] 전략 패턴 - 3

내용

  • 체스말이 이동할 수 있는 방식을 구한 뒤 해당 방식을 기준으로 원하는 좌표까지 찾아가는 방식을 전략 패턴으로 구사했다.
  • 중복되는 길찾기 코드를 줄일 수 있어서 용이했고, 수정하기도 간편했다.

링크

🙈디자인패턴 전략 패턴 ( Strategy Pattern )🐵

Java 디자인 패턴 - 전략 패턴 설명

[TDD] JUnit5 - 2

내용

  • 여러 값을 비교하는 다양한 방법 학습했다.
  • 다양한 경우에 대해서 작은 단위의 테스트를 진행했다.
  • 모든 체스말의 움직이는 경우를 작은 단위로 테스트 해두니 추후에 코드 리팩토링 때 오류를 찾는 것이 매우 용이했다.

링크

Java8의 Stream 생성 방법 및 예제

[OOP] 인터페이스와 추상클래스 - 1

  • 체스말을 관리하는 부분을 추상 클래스로 정의하여 사용했다.
  • 커맨드를 추상 클래스로 정의하여 사용했다.

[JDK] Enum - 2

  • 좌표 값을 관리하고 캐싱하여 메모리 사용을 줄였다.
    • 가로 값
    • 세로 값
  • 방향에 대한 가중치 값을 관리했다.
  • 팀 정보를 관리했다.

느낀점

이번 미션은 블랙잭 보다 훨씬 어렵게 느껴졌습니다. 그만큼 새로운 것도 많이 배울 수 있어서 좋은 기회가 되었습니다. 계속 리팩토링을 해도 마음에 들지 않는 부분들이 보이네요. DTO 를 이번에 처음 적용시켜보았습니다. HTML 을 View 로 사용하면서 자바 객체에서 View 에 표시할 정보들을 전달하기 위한 용도로 값들을 String 으로 변환시켜서 HTML 에 전달해주는 용도로 사용하는 것이 DTO 라고 이해하고 사용했습니다. 처음 접해보는 것들이 많아서 난잡해 졌네요. 이번 미션의 핵심이 전체적으로 웹 서비스가 어떻게 돌아가는지 알아보는 미션이라고 알고 진행했습니다.