어떤 모듈이 다른 모듈의 내부 정보를 지나치게 많이 알고 있는 코드(강한 결합도)
CheckIn - isFastPass 에서 불필요하게 많은 Ticket 클래스의 메서드에 접근한다
isFastPass 메서드를 Ticket 클래스로 옮기고 CheckIn 클래스를 제거
class CheckIn {
public boolean isFastPass(Ticket ticket) {
LocalDate earlyBirdDate = LocalDate.of(2022, 1, 1);
return ticket.isPrime() && ticket.getPurchasedDate().isBefore(earlyBirdDate);
}
}
class Ticket {
private LocalDate purchasedDate;
private boolean prime;
// ...constructor, getPurchasedDate, isPrime
}
// beforeCheckIn 클래스 제거
class Ticket {
private LocalDate purchasedDate;
private boolean prime;
// ...constructor, getPurchasedDate, isPrime
public boolean isFastPass() {
LocalDate earlyBirdDate = LocalDate.of(2022, 1, 1);
return isPrime() && getPurchasedDate().isBefore(earlyBirdDate);
}
}