1

我有一个包含大量数据的类,它允许对类中的数据进行一些复杂的操作。该类还具有一些成员函数,这些函数允许检索一些数据,即检索对包含在该类中的对象实例的引用。所有数据都保存在 RAM 中(没有支持后台事务的数据库)。

现在我想实现一种事务的概念,即我想添加一个StartTransaction() 方法和一个Rollback() 方法。这就是我的问题开始的地方:如何在不更改任何对象引用的情况下将类中的数据恢复到以前的状态(因为它们可能在类外使用)。

因此,所有克隆概念都没有用。

这种方法是否有解决方案,或者这种方法太奇怪以至于我不应该遵循它。有什么替代方案?

4

1 回答 1

0

您仍然可以使用克隆,但您的代码需要一个新的间接级别:

老的:

class Data { int SomeValue; }

class DataInternal { int SomeValue; }
class Data { DataInternal internal; int SomeValue { get { return internal.SomeValue; } }

这允许您将外部接口 ( Data) 与存储 ( DataInternal) 分离。您可以随意克隆和还原internal,而不会引起任何人的注意。

于 2012-12-07T21:40:39.563 回答