我知道不可变对象始终具有相同的状态,即它们实际创建时的状态。它们的不变量是由构造函数建立的,并且由于它们的状态在构造后不会改变,因此这些不变量总是保持良好状态,这就是为什么它们可以安全地在多线程环境中发布。这一切都很好,但是由于我们生活在一个动态的世界中,程序的状态不断变化,如果我们通过不可变对象构造程序的状态,这些对象会给我们带来什么好处呢?
“这些物体给我们带来什么好处”您已经回答了。
关于问题的“动态”部分,如果您需要“更改”一个不可变对象,您可以从旧对象创建一个新对象:
Immutable oldObj = new Immutable(...);
Immutable newObj = new Immutable(oldObj.property1, "a new value for property 2");
如果您发现不断重复这样做,那么您可能需要使对象可变,并添加能够在并发环境中使用该对象所需的相关踩踏安全功能。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)