Domain Model Design

이 page는 도메인 모델을 입력과 출력의 편의가 아니라, 문제 영역의 규칙·상태·연산을 코드의 객체와 관계로 표현하는 설계로 해석한다. 원문의 로또 예제에서는 티켓, 당첨 번호, 당첨 결과처럼 규칙을 가진 대상을 별도 객체로 두고, 구매와 당첨 계산의 흐름은 Service가 조합한다.[1]

모델이 책임질 것

Application 흐름과의 경계

flowchart LR
    I[입력] --> C[Controller]
    C --> LS[LottoService: 구매 흐름]
    C --> WS[WinningService: 당첨 계산]
    LS --> L[Lotto / Tickets]
    WS --> L
    WS --> S[Statistics]
    S --> O[출력]

설계 점검 질문

관련

출처


  1. 도메인 모델 설계 — 로또 시스템의 클래스 관계, Value Object·Enum·Service 분리, Controller 처리 흐름을 제시한다. "불변, 동등성이 값 기준"(L84), "validate(numbers);"(L91), "당첨 번호 입력 (1~45, 6개, 중복 없음)"(L148), "로또 번호 생성 (1~45 중 6개 랜덤)"(L153) ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎

  2. 레이어드 아키텍처 — 레이어 책임표: "| Controller | 흐름 제어, try-catch | 도메인 로직 직접 처리 |"(L27), "| Domain | 핵심 규칙, 불변식 | 외부 의존성 |"(L29) ↩︎