知识卡片

值对象按值相等

普通读书笔记卡 · 765.f

内容

引用对象依靠标识保持同一性,值对象依靠值判断相等。值对象最好不可变,否则共享副本被修改会造成走样问题。

参考来源

- 位置:《UML精粹:标准对象建模语言简明指南》第5章《类图:进阶概念》(源文件:_epub-src/EPUB/4.xhtml) - 结论依据:原文围绕“值对象应该是不可变的”给出定义、对比或使用限制,说明该概念的含义和适用边界,因此可推出本卡片结论。 - 原始内容:值对象应该是不可变的;换句话说,你应该不能获得一个日期对象1-Jan-04,然后改变为2-Jan-04。相反,你应该创建一个新的2-Jan-04对象并使用它。这样做的原因是,如果日期被共享,你会以不可预测的方式更新另一个对象的日期,这个问题称为走样(aliasing)。