0
我在Enumerator中見過這種模式。它確保在枚舉項目時集合沒有被改變。在Enumerator中使用的這種設計模式是什麼?
public class Versioned
{
internal int version = 0;
public void ThisBreaksVersion()
{
version++;
}
}
public class WorksOnVersioned
{
private readonly int version;
private readonly Versioned versioned;
public WorksOnVersioned(Versioned versioned)
{
this.versioned = versioned;
this.version = versioned.version;
}
public void DoWork()
{
if(version != other.version)
throw new Exception(); // Ooop.. Out of sync!
}
}
var v1 = new Versioned();
var w1 = WorksOnVersioned(v1);
w1.DoWork(); // Yup
var v2 = new Versioned();
var w2 = WorksOnVersioned(v2);
v2.ThisBreaksVersion();
w2.DoWork(); // v2 has changed -> exception!
我還可以看到,在使用共享資源確保本地副本與資源中的副本相同時,這很有用。
但是這種模式叫什麼?還有其他的東西可以用嗎?
由於沒有其他人回答,現在這種模式被稱爲「版本快照」:) – simendsjo 2010-06-29 15:01:46