知识卡片
值对象靠整体
内容
值对象没有独立身份,靠一组属性整体表达含义,适合金额、地址、规格等不可拆散的概念。发散:值对象把隐性规则封装成类型,比到处传基础字段更能防止业务语义泄漏。
参考来源
- 位置:《复杂软件设计之道》第4章《实体和值对象》"4.3 值对象"一节(源文件:_chapter_text/ch04.txt)
- 结论依据:原文明确"值对象是没有唯一标识的对象,是一堆数据值的容器……值对象中的数据值一旦被构建,就不能改变,这是不变性的特性",并以邮件发送方法的两个字符串参数为例说明"通过包装数据值,值对象提供了更易阅读和理解的上下文",防止业务语义被基础类型掩盖。
- 原始内容:值对象是没有唯一标识的对象,是一堆数据值的容器……首先,值对象中的数据值一旦被构建,就不能改变,这是不变性的特性……通过使用正确的值对象名称,让代码记录自己的业务,只需要一瞥就可以看到对服务/组件/方法的输入有什么期望……通过包装数据值,值对象提供了更易阅读和理解的上下文。