우아한테크코스 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 )🐵
[TDD] JUnit5 - 2
내용
- 여러 값을 비교하는 다양한 방법 학습했다.
- 다양한 경우에 대해서 작은 단위의 테스트를 진행했다.
- 모든 체스말의 움직이는 경우를 작은 단위로 테스트 해두니 추후에 코드 리팩토링 때 오류를 찾는 것이 매우 용이했다.
링크
[OOP] 인터페이스와 추상클래스 - 1
- 체스말을 관리하는 부분을 추상 클래스로 정의하여 사용했다.
- 커맨드를 추상 클래스로 정의하여 사용했다.
[JDK] Enum - 2
- 좌표 값을 관리하고 캐싱하여 메모리 사용을 줄였다.
- 가로 값
- 세로 값
- 방향에 대한 가중치 값을 관리했다.
- 팀 정보를 관리했다.
느낀점
이번 미션은 블랙잭 보다 훨씬 어렵게 느껴졌습니다. 그만큼 새로운 것도 많이 배울 수 있어서 좋은 기회가 되었습니다. 계속 리팩토링을 해도 마음에 들지 않는 부분들이 보이네요. DTO 를 이번에 처음 적용시켜보았습니다. HTML 을 View 로 사용하면서 자바 객체에서 View 에 표시할 정보들을 전달하기 위한 용도로 값들을 String 으로 변환시켜서 HTML 에 전달해주는 용도로 사용하는 것이 DTO 라고 이해하고 사용했습니다. 처음 접해보는 것들이 많아서 난잡해 졌네요. 이번 미션의 핵심이 전체적으로 웹 서비스가 어떻게 돌아가는지 알아보는 미션이라고 알고 진행했습니다.