在一些场合下也较合理，易于了解，而且提供较高的安全性。小型的不可变物件可以被有效率的复制，但是较大的不可变物件，如果想要有效率的被复制，就需要更复杂的可持久化数据结构演算法。因为效能的缘故，有时候会以可变物件来加以取代不可变物件。典型的例子例如字符串对象：C++ STL 中的 std::basic_string<T> 是可变的，即可以修改一个 std::basic_string<T> 对象所表示的字符串；而 .net 中的 System.String 是不可变的，System.Text.String