>source

처음으로 영어를 유감스럽게 생각합니다. 도메인 기반 디자인을 배우고 있으며 작업중 인 응용 프로그램에서 일부 개념을 구현하려고합니다. 내 작업은 모든 수준에서 DDD를 완전히 구현하기에는 너무 복잡하지 않지만 원칙과 핵심 아이디어가 마음에 들어 사용하려고합니다.

앱이 책을 판매한다고 가정 해 봅시다. 그래서 Book 엔터티와 BooksCollection 또는 BooksRepository가 있습니다. 프론트 엔드에서 작업 중이며 해당 컬렉션 또는 업데이트가 서버에서 제공됩니다. 그리고 BookCard로 구성된 BooksList의 BooksScreen에 표시하고 싶습니다. selectBook과 같은 첫 번째 전화를 선택하면 콜렉션에서 selectedBookId를 변경하고 두 번째로 선택된 책의 데이터가 표시되고 사용자가 도메인 로직과 관련된 일부 조치를 수행 할 수있는 BookDetails 화면으로 이동합니다.

첫 번째 질문은 해당 BooksCollection의로드 상태를 어디에 두어야합니까? 로드 상태는 내가 이해하는 도메인 논리가 아니며 "todo done"과 같은 엔티티 상태가 아닙니다. 그러나 컬렉션이 업데이트 될 때 UI 목록에로드 표시기를 표시해야합니다.로드 오류 및 성공에 대한 오류가 각각

두 번째는 단일 책에 대해 동일한 로딩 상태를 어디에 두는가? 컬렉션의 원인을 분리하여 해당 응용 프로그램 관련 클래스에 해당 상태를 저장할 수 있습니다. "BooksScreenState"또는 덜 어리석은 이름을 가진 것. 그러나 UI에서 각 특정 카드의 상태를 표시하기로 결정하면 어떻게됩니까? 특정 카드를로드하지 못했습니다. 또는 앱에 단일 사용자가 있고 데이터를로드 할 수 있습니다. 그는 권한을 부여 받았거나 그렇지 않을 수 있습니다.

그래서 "UI를 표시하기 위해 도메인과 애플리케이션 로직을 연결하는 방법"과 같은 것으로 요약 할 수 있습니다.

  • 답변 # 1

    흥미로운 질문입니다. UI는 대부분 비즈니스 규칙으로 가득 차 있지 않으며 대부분 reactjs를 사용하고 UI 프레임 워크는 일반적으로 매우 규범 적이며 많은 것을 허용하지 않기 때문에 일반적으로 UI 수준에 DDD를 적용한다고 생각하지 않습니다. 유연성.

    하지만 귀하의 질문에 대답하려면, 당신은 (즉,이 DDD를 사용하여 설계) 당신의 UI에 "로드"상태를 싶지 않은 경우, 그것은 "보기"개체 또는 "보기의 일부 표현에 첨부 할 것 ";그것이 UL (유비쿼터스 언어)에 더 잘 맞기 때문입니다. 당신의 질문에 대한 작은 발췌문에서 어떻게 묘사했는지 생각해보십시오 :

    와이즈 비즈

    즉, 카드가 열거,로드,로드 상태가 열거 가능한 객체 (엔티티 또는 가치 객체)임을 의미합니다. UI에서 해당 객체를 대기열에 추가하여 해당 필드의 원하는 표현을 표시 할 수 있습니다.

    따라서 두 질문 모두 본질적으로 같은 대답을합니다. UI를로드 중이므로 상태는 UI 객체에만 관련이 있으며 백엔드에 표시되는 "도서"와 같이 도메인 모델에있는 엔티티는 아닙니다. 예를 들어 자바 스크립트에서와 같이 '도서'의 프런트 엔드 표현이 있어도로드 상태를 유지하면 뷰 레이어의 뷰 객체에서 여전히 더 의미가 있습니다. 이 답변에는 디자인이 책을 포함하는 집계 인 뷰를 갖는 것도 유효하기 때문에이 답변에 대한 단순화/유연성이 있습니다. 해당 Book 객체는 "로드 중"상태 일 수 있습니다. 이 모든 것은 여전히 ​​UI 계층으로 제한되며 이러한 집계는 UI 프레임 워크가 허용하는 유연성에 따라 달라집니다.

    But what if i decide to show state for each specific card in the UI

  • 이전 PDF.js - pdfjs - 현재 보이는 페이지를 어떻게 볼 수 있습니까?
  • 다음 도커 컨테이너에서 시작된 nginx 서비스 중지