值对象
- ·/typeDefinitions结点下,作为领域基础类型。在一个领域内可能会广泛使用一些适合抽象为值对象的基础概念,把它们定义在这个结点下是很合适的。
- ·/valueObjects结点下,这里放置的是在限界上下文范围内被各个聚合共用的值对象的定义。
领域基础类型
-
在DDDML规范中不需要预设任何基本类型。也就是说,在DDDML文档中甚至不需要在使用一个值对象之前,先对一个“值对象是什么样子”做出任何描述——不需要声明这个值对象是由哪些属性组成的,也不需要声明它是否是继承自其他值对象的子类型。
-
DDDML应该支持在团队一致认可某个领域概念是值对象之后,就可以在DDDML文件中直接使用它。这时不需要考虑是不是能“生成”值对象的实现。也就是说在DDDML文档中使用一个没有显式定义的值对象是合法的。
valueObjects:
PersonalName:
properties:
FirstName:
type: string
LastName:
type: string
aggregates:
Person:
id:
name: PersonId
type: string
properties:
Name:
type: PersonalName
defaultValue:
FirstName: JOHN
LastName: DOE
#…
数据值对象
- 在应用开发的过程中,我们经常会用到一种只有属性、没有方法的值对象。这样的值对象本身没有什么重要的行为,只是一个简单的数据结构、一个数据的容器,所以我们把它叫作数据值对象。
valueObjects:
PersonalName:
properties:
FirstName:
type: string
description: First Name
length: 50
LastName:
type: string
description: Last Name
length: 50
枚举对象
- 枚举对象是一种特殊类型的值对象。我们可以这样定义一个枚举对象:
enumObjects:
DocumentAction:
baseType: string
values:
Draft:
description: Draft
Complete:
description: Complete
Void:
description: Void
Close:
description: Close
Reverse:
description: Reverse