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