Immutable Objects

如果对象的状态在构造后无法更改,则认为该对象是不可变的。作为创建简单,可靠代码的合理策略,对不可变对象的最大依赖已被广泛接受。

不可变对象在并发应用程序中特别有用。由于它们不能更改状态,因此它们不能被线程干扰破坏或在不一致的状态下观察到。

程序员通常不愿意使用不可变的对象,因为他们担心创建新对象而不是在适当位置更新对象的成本。对象创建的影响常常被高估,并且可以被与不变对象相关联的某些效率所抵消。其中包括由于垃圾收集而减少的开销,以及消除了保护可变对象免受损坏所需的代码。

以下小节将介绍一个其实例是可变的类,并从中派生具有不变实例的类。通过这样做,它们给出了这种转换的一般规则,并展示了不可变对象的某些优点。