# 不可变对象

如果它建成后它的状态不能改变,一个对象被认为是不可变的。对不可变对象的最大依赖被广泛接受为创建简单可靠代码的良好策略。

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

程序员通常不愿使用不可变对象,因为他们担心创建新对象的代价,而不是更新对象。对象创建的影响往往被高估, 可以通过与不可变对象相关联的一些效率来抵消。这些包括由于垃圾收集而导致的开销降低,并且消除了保护可变对象免受损坏所需的代码。

以下小节采用一个类,其实例是可变的,并从其派生具有不可变实例的类。在这样做时,他们给出了这种转换的一般规则,并展示了不可变对象的一些优点。