知识卡片
值对象应设计为不变类以获线程安全
内容
值对象只需关注值,DDD建议尽量设计为不变类:状态创建后不能修改、字段全为final、创建期无this溢出。不变类天然线程安全,可减少并发控制成本;更新状态时返回保存新状态的新实例来“替换”原对象。
参考来源
- 位置:《解构领域驱动设计》15.3.2(源文件:_epub-src/OEBPS/027.xhtml)
- 结论依据:确立值对象不变性的设计目标与实现约束。
- 原始内容:考虑到值对象只需关注值的特点,领域驱动设计建议尽量将值对象设计为不变类。若能保证值对象的不变性,就可以减少并发控制的成本,因为一个不变的类是线程安全的。