DIP 위반

블랙잭 게임에서 HitRunning을 extends하고 있고, RunningState를 implements 하고 있다.

Hit - Running - State 의 순으로 의존을 하는 구조이다.

아래는 Running의 메서드에서 Running의 서브 클래스인 Hit를 생성하고 있다.

@Override
public State draw(final Card card) {
    hand.add(card);
    if (hand.isBlackjack()) {
        return new Blackjack(hand);
    }
    if (hand.isBust()) {
        return new Bust(hand);
    }

    return new Hit(hand);
}

이는 DIP 위반으로 볼 수 있다. 해당 메서드의 구현을 Hit에서 구현하도록 리팩토링 해야겠다.

이 부분 뿐만 아니라 StateisStay(), isHit()와 같이 하위 구현체에 의존하는 부분도 있었다.

이렇게 구현하지 않고, 메시지를 던져서 각 구현체에서 알아서 처리하도록 변경해야겠다.

Sequenced Collections

JCF를 사용할 때 이 컬렉션이 순서를 보장해주나? 와 같이 헷갈릴 때가 종종 있었다.

JDK 21 에서 Sequenced Collections을 포함시키는 것으로 결정했다.

Sequenced Collections을 implementes하는 컬렉션은 사용자가 이 컬렉션은 순서를 보장하겠구나! 하고 명확히 알 수 있을것이다.

주말이나 시간이 있을 때 좀 더 자세하게 알아보고 Prolog에 작성해보기로 한다.

Sequenced Collections

'회고 > 우아한테크코스' 카테고리의 다른 글

2023.03.16 일일 회고  (0) 2023.03.17
2023.03.15 일일 회고  (0) 2023.03.16
2023.03.13 일일 회고  (0) 2023.03.14
2023.03.09 일일 회고  (0) 2023.03.10
2023.03.08 일일 회고  (0) 2023.03.09

+ Recent posts