【发布时间】:2012-06-07 18:39:48
【问题描述】:
我了解不可变对象与可变对象之间的优缺点,但是当你来设计它时,你如何决定选择哪一个。
我之所以问这个问题是因为如果它是可变的,您可以通过将对象更改回初始状态来重用该对象,因为它既高效又经济,因此当您处理多步操作时,您可以重用它一遍又一遍。而当您执行多步操作时,不可变对象的性能会被放大,因为它在每一步都会生成一个新对象。
示例如下:
//Mutable
A a = new A();
for(int j = 0 ; j < 1000 ; j++){
a.setP1(j);
//do something
}
//Immutable
for(int j = 0 ; j < 1000 ; j++){
A a = new A(j);
//do something
}
我知道不可变对象是安全的、不需要同步、简单且共享内部结构,但除此之外还有什么特别的原因吗?我们什么时候应该让我们的类成为最终的(不可变的)?
【问题讨论】: