2009-07-02 1 views
6

지금 바로 http://en.wikipedia.org/wiki/Domain-driven_design을 읽고 있는데, '값 개체'와 '서비스'가 DDD.도메인 기반 디자인 초보자는 '가치 객체'와 '서비스'를 간략하게 설명하십시오.

  • 값 개체 : 개체의 특성을 설명하는 개체입니다. 가치 객체에는 개념적 정체성이 없습니다. 일반적으로 읽기 전용 객체이며 Flyweight 디자인 패턴을 사용하여 공유 할 수 있습니다.

  • 서비스 : 작업이 개념적으로 모든 개체에 속해 있지 않은 경우. 문제의 자연스러운 윤곽을 따라 서비스에서 이러한 작업을 구현할 수 있습니다. GRASP에서는 서비스 개념을 "순수 제조"라고합니다.

값 objexts : 누군가가 나에게 간단한 예제를 제공 할 수 있습니까?

서비스 : 개체/개체가 아니거나 저장소/공장에 속해 있지 않은 경우 서비스입니까? 나는 이것을 이해하지 못한다.

답변

7

값 개체의 원형 예는 Money입니다. 국제 전자 상거래 애플리케이션을 개발하면 '돈'이라는 개념을 수업에 캡슐화하는 것이 좋습니다. 이렇게하면 기본적인 추가, 뺄셈 등의 금전적 가치에 대한 작업을 수행 할 수있을뿐만 아니라 유로화와 USD 간의 통화 변환도 수행 할 수 있습니다.

Money 개체에는 고유 한 ID가 없습니다.이 개체에는 사용자가 입력 한 값이 들어 있으며 처리 할 때 사라집니다. 또한 10 USD가 들어있는 두 Money 개체는 별도의 개체 인스턴스가 있다고하더라도 동일하게 간주됩니다.

값 개체의 다른 예는 값과 ​​단위 (예 : 9.87km 또는 3 피트)가 포함될 수있는 길이와 같은 측정 값입니다. 데이터를 단순히 포함하는 것 외에도 이러한 유형은 다른 측정 등으로 변환 방법을 제공 할 가능성이 높습니다.

서비스는 중요한 도메인 작업을 수행하지만 실제로는 도메인의 다른 '명사'기반 개념과 잘 맞지 않는 유형입니다. 가능한 한 적은 수의 서비스를 유지하도록 노력해야하지만 때로는 서비스가 중요한 도메인 개념을 캡슐화하는 최선의 방법입니다.

가치 객체, 서비스 및 우수 도서 Domain-Driven Design에서 더 많은 내용을 읽을 수 있습니다.

3

값 개체 : 일반적인 예는 주소입니다. 평등은 개체의 값을 기반으로하므로 이름이 아니라 신원을 기준으로합니다. 즉, Address 오브젝트가 메모리에서 완전히 다른 2 개의 오브젝트이거나 데이터베이스에 다른 기본 키가 있더라도 Address 오브젝트의 값이 같으면 2 Person 오브젝트가 동일한 주소를 갖습니다.

서비스 : 반드시 특정 도메인 개체에 속하지는 않지만 도메인 개체에는 작동하는 작업을 제공하십시오. 예를 들어, 제품 가격이 특정 가격 이하로 떨어지면 온라인 상점에서 전자 메일 알림을 보내는 서비스를 생각하고 있습니다. 값은 엔티티 대 개체 식별하는 방법의 http://www.infoq.com/minibooks/domain-driven-design-quickly

관련 문제