# 领域模型设计 ## 一、术语与定义 | 英文缩写 | 英文全称 | 中文翻译 | | -------- | -------- | -------- | | | | | ## 二、业务流程 不涉及 ## 三、数据类型 数据类型采用的是C#的数据类型,主要有下面的一些类型: | 数据类型 | 含义 | 最小值/最大值/精度 | 占用空间 | 说明 | | -------------- | -------------- | ------------------------------------------------------------ | ------------- | -------------------------------- | | bool | 布尔值 | false/true | 1字节 | | | sbyte | 超短整型 | -128127 | 1字节 | | | byte | 无符号超短整型 | 0255 | 1字节 | | | short | 短整型 | -32,76832,767 | 2字节 | | | ushort | 无符号短整型 | 065,535 | 2字节 | | | int | 整型 | -2,147,483,6482,147,483,647 | 4字节 | | | uint | 无符号整型 | 04,294,967,295 | 4字节 | | | long | 长整型 | -9,223,372,036,854,775,8089,223,372,036,854,775,807 | 8字节 | | | ulong | 无符号长整型 | 0/18,446,744,073,709,551,615 | 8字节 | | | float | 单精度浮点数 | -3.40282347E+38/F3.40282347E+38F/6~7位有效数字 | 4字节 | | | double | 双精度浮点数 | -1.7976931348623157E+308/1.7976931348623157E+308/15~16位有效数字 | 8字节 | | | DateTime | 日期时间 | 0000-01-01 00:00:00.0000000/9999-12-31 23:59:59.9999999/100ns | 8字节 | 统一使用UTC时间进行传输和存储。 | | TimeSpan | 时间跨度 | -10,675,199.02:48:05.4775808/10,675,199.02:48:05.4775807100ns | 8字节 | | | string | 字符串 | | n字节 | 统一使用UTF8编码进行传输和存储。 | | Complex | 复数 | | 16字节 | | | IList | 列表 | [0]~[n-1] | n * sizeof(T) | | | ICollection | 集合 | | n * sizeof(T) | 与IList类似,只是没有顺序关系。 | ## 四、实体(Entity)及聚合根(AggregateRoot) 实体是模型中需要区分个体的对象,拥有标识、数据和行为。实体有标识,允许变化,判断两个实体相等的标准是标识相等。聚合(Aggregate)表示一组领域对象(包括实体和值对象),用来表述一个完整的领域概念。而每个聚合都有一个根实体,这个根实体又叫做聚合根。聚合根是聚合所表述的领域概念的主体,外部对象需要访问聚合内的实体时,只能通过聚合根进行访问,而不能直接访问。 ## 五、枚举 ## 六、值对象(ValueObject) 值对象是通过属性来识别的对象,它将多个相关属性组合为一个概念整体。值对象没有标识,不允许变化,判断两个值对象相等的标准是值对象内部所有属性值相等。 ## 六、领域服务 不涉及 ## 七、领域事件 不涉及 ## 八、其他 不涉及 ## 九、参考引用 不涉及