1
有很多關於數據模型中的可變/不可變對象的說法。可變與不可變與業務邏輯對象
但是業務邏輯呢?例如:一個CD播放器。一個班負責播放CD。
// Immutable version:
class Player
{
CD cd;
public Player(CD cd) { ... }
}
// Mutable version:
class Player
{
CD cd;
public void ChangeCD(CD cd) { ... }
}
我可以想到兩個版本的幾個微妙的優點和缺點。例如,當玩家可變時,即使CD改變,其他物體也可以拿走玩家並保持有效。當玩家是不可變的時候,你需要一個包裝器對象(例如Command Pattern),當一個新玩家被創建時它會被更新。
哪個版本更適合哪種情況?有沒有一般的指導方針?
所以你會傳遞一個CD對象與每個方法 - 例如暫停(cd),尋求(cd,時間)?玩家沒有任何關於任何CD的狀態。看起來不錯,但是你會在這個設計中存儲CurrentPlaybackPosition? – LTR 2011-05-15 11:27:37
@LTR取決於。我打算把CD上的數據直接加載到某種私有二進制緩衝區中。然後,您可以停下來,向前/向後走,並完全覆蓋該緩衝區。 – Raynos 2011-05-15 12:31:37