public class Console {
private static Scanner scanner;
private Console() {
}
public static String readLine() {
return getInstance().nextLine();
}
private static Scanner getInstance() {
if (Objects.isNull(scanner) || isClosed()) {
scanner = new Scanner(System.in);
}
return scanner;
}
private static boolean isClosed() {
try {
final Field sourceClosedField = Scanner.class.getDeclaredField("sourceClosed");
sourceClosedField.setAccessible(true);
return sourceClosedField.getBoolean(scanner);
} catch (final Exception e) {
System.out.println("unable to determine if the scanner is closed.");
}
return true;
}
}
사용자의 수
상대방의 수
두 가지 비교 결과에 따라 ball, strike를 던져줘야 하는 상황
필요한 자원 : { player, computer, int ball, int strike }
알아야 할 것, 해야할 일들이 너무 많다.
프로덕션 코드 구축과 테스트 용이성에 대한 고민을 반복하면서
메서드 체이닝이 너무 자주 사용된다고 느낌
변경에 취약해지는 것을 고려해야 한다는 의미로 간추림
고민
추후 계층형 구조가 개선된 모습으로 리팩토링 할 수 있을까?