知识卡片

值对象应设计为不变类以获线程安全

普通读书笔记卡 · 1973.q

内容

值对象只需关注值,DDD建议尽量设计为不变类:状态创建后不能修改、字段全为final、创建期无this溢出。不变类天然线程安全,可减少并发控制成本;更新状态时返回保存新状态的新实例来“替换”原对象。

参考来源

- 位置:《解构领域驱动设计》15.3.2(源文件:_epub-src/OEBPS/027.xhtml) - 结论依据:确立值对象不变性的设计目标与实现约束。 - 原始内容:考虑到值对象只需关注值的特点,领域驱动设计建议尽量将值对象设计为不变类。若能保证值对象的不变性,就可以减少并发控制的成本,因为一个不变的类是线程安全的。