「static readonly T Instance = new T();」を使用するシングルトンがあります。パターン。しかし、T が使い捨てであり、実際には単体テストのために破棄する必要がある場合に遭遇しました。このパターンを変更して使い捨てシングルトンをサポートするにはどうすればよいですか?
私が望むインターフェースは次のようなものです:
var x = Foo.Instance;
var y = Foo.Instance; // x == y
...
x.Release(); // this causes the next Foo.Instance to return a fresh object
// also, it assumes no further operations on x/y will be performed.
注 - もちろん、パターンはスレッドセーフでなければなりません。
編集- 本番コードの目的で、これは真のシングルトンです。問題は、いくつかのファイルをロックすることです。そのため、単体テストでのクリーンアップのために、それを破棄する必要があります。
可能であれば、再利用できるパターンも希望します。