1

大量のデータを含むクラスがあり、クラス内のデータに対していくつかの複雑な操作を行うことができます。このクラスには、一部のデータを取得できる、つまりクラスに含まれるオブジェクトインスタンスへの参照を取得できるメンバー関数もあります。すべてのデータはRAMに保持されます(バックグラウンドでトランザクションをサポートするDBはありません)。

ここで、一種のトランザクションコンセプトを実装したいと思います。つまり、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これにより、外部インターフェイス( )をストレージ()から切り離すことができますDataInternalinternal誰にも気付かれることなく、好きなようにクローンを作成して復元できます。

于 2012-12-07T21:40:39.563 に答える