Pet*_*ete 4 java concurrency builder immutability
不可变对象很棒,因为它们在多线程应用程序中不需要特别小心或提供.然而,许多物体不能自然地变化.例如,一旦订单被填写,就会提交,处理并分配一个永久ID的订单.创建和提交订单时无法提供ID,但稍后(或可能永远不会)到达.
可能的解决方案:
这些解决方案合理吗?还有其他想法吗?谢谢.
使类不可变并null为ID 创建有效值.当您有要分配的ID时,将现有的不可变对象替换为相同的新对象,除了它具有新ID而不是旧ID.我喜欢使用withX这个purose的方法.
Foo foo = new Foo("bar");
...
foo = foo.withId(12345); // replace foo with new derived object
Run Code Online (Sandbox Code Playgroud)