DDD-10- 值对象设计
1、定义
值对象是人类为了认识和描述事物的属性,在头脑里经过抽象思维创造出来的概念。
2、识别
仅用来描述特征
只关心值对象的属性
不关心有没有唯一标识
可以拥有自己的行为
任意一个值变了就不是同一个值对象
3、价值
不变性有助于减少系统的复杂性
4、值对象分类
原子值对象 vs 复合值对象
原子值对象,是在概念上不能再拆分的值对象
复合值对象是其他对象组合起来的值对象。
独立的值对象 vs 依附于实体的值对象
独立:可以用来描述任何实体的属性,所以可以不依附于任何实体而单独存在
依附:它只能表达特定实体的属性,脱离了实体也就没有单独存在的意义
可数值对象 vs 连续值对象
可数:状态
连续:实数
预定义值对象 vs 非预定义值对象
所谓预定义的,就是需要以某种方式在系统里,把这种对象的值定义出来
枚举
非预定义的值对象就不必预先定义在系统里
整数
值对象代码包结构
依附实体的,与实体放在一起
独立存在的,单独一个公共包
与实体的本质区别
实体是人通过感官可以感觉到的客观存在的事物,或者以存在的事物为蓝本想象出来的事物
而值对象是为了描述事物,由人抽象出来的纯粹概念。讨论值对象的变化是没有意义的
5、注意
值对象也可以有行为,但是不能改变本身属性
评论