Skip to content

[Ch 13] 중요한 것은 클라이언트의 관점 #45

@ljhee92

Description

@ljhee92

💡 이슈

  • 이번 장에서는 지속적으로 중요한 것이 클라이언트의 관점이라고 이야기합니다.
  • 레벨 1 블랙잭 미션에서 저는 Participant를 부모 타입으로, DealerPlayer를 자식 타입으로 사용했습니다. 클라이언트의 관점에서 이 상속은 서브클래싱일까요 서브타이핑일까요?

❓ 이유

  • DealerPlayer를 호출하고 사용하고 있는 클라이언트의 관점에서 draw라는 메서드를 실행했을 때, 클라이언트는 딜러와 플레이어 모두 동일하게 한 장의 카드를 뽑는 것을 기대할 것이라고 생각합니다. 또, isBust 혹은 isBlackjack과 같은 메서드를 실행했을 때에도 클라이언트는 DealerPlayer 모두에게 동일한 기대를 한다고 생각합니다. 이런 관점에서는 이 상속이 서브타이핑에 해당한다고 볼 수 있습니다.
  • 그렇지만 클라이언트에서 Participant가 아니라 DealerPlayer를 구분하여 사용하고 있었기 때문에 대체 가능성이 깨졌다고 볼 수 있고, 이 상속은 단순히 중복 코드를 없애기 위한 서브클래싱이었다고 생각이 듭니다.
  • 그래서 지금 다시 블랙잭 미션을 구현하게 된다면 상속을 사용하지 않을 것이라고 결론을 내렸습니다.
  • 다른 분들은 블랙잭에서 상속을 사용하셨는지 사용하지 않으셨는지, 사용하지 않으셨다면 어떻게 구현하셨는지 궁금합니다.
    또 13장을 읽은 후인 지금, 다시 블랙잭 게임을 구현하게 된다면 상속을 사용하실 것인지에 대한 의견도 같이 나눠보면 좋겠습니다~!

📖 관련 페이지

  • Ch 13 전체

Sub-issues

Metadata

Metadata

Assignees

Labels

ch13서브클래싱과 서브타이핑

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions