DIP 위반
블랙잭 게임에서 Hit
는 Running
을 extends하고 있고, Running
은 State
를 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
에서 구현하도록 리팩토링 해야겠다.
이 부분 뿐만 아니라 State
에 isStay()
, isHit()
와 같이 하위 구현체에 의존하는 부분도 있었다.
이렇게 구현하지 않고, 메시지를 던져서 각 구현체에서 알아서 처리하도록 변경해야겠다.
Sequenced Collections
JCF를 사용할 때 이 컬렉션이 순서를 보장해주나? 와 같이 헷갈릴 때가 종종 있었다.
JDK 21 에서 Sequenced Collections을 포함시키는 것으로 결정했다.
Sequenced Collections
을 implementes하는 컬렉션은 사용자가 이 컬렉션은 순서를 보장하겠구나! 하고 명확히 알 수 있을것이다.
주말이나 시간이 있을 때 좀 더 자세하게 알아보고 Prolog에 작성해보기로 한다.
'회고 > 우아한테크코스' 카테고리의 다른 글
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 |