【发布时间】:2011-05-14 18:06:30
【问题描述】:
关于数据模型中的可变/不可变对象已经说了很多。
但是业务逻辑呢?例如:CD 播放器。一个班级负责播放 CD。
// Immutable version:
class Player
{
CD cd;
public Player(CD cd) { ... }
}
// Mutable version:
class Player
{
CD cd;
public void ChangeCD(CD cd) { ... }
}
我能想到这两个版本的几个微妙的优点和缺点。 例如,当播放器是可变的时,其他对象可以占用播放器,即使 CD 发生变化,它也保持有效。当播放器不可变时,您需要一个在创建新播放器时更新的包装对象(例如命令模式)。
在哪些情况下哪个版本更可取?有没有一般的指导方针?
【问题讨论】:
标签: oop immutability mutable