У меня есть синглтон, который использует «статический только для чтения 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.
Примечание. Конечно, шаблон должен быть поточно-ориентированным.
Редактировать - для производственного кода это настоящий синглтон. Дело в том, что он блокирует некоторые файлы, поэтому для очистки в модульных тестах мы должны его утилизировать.
Я бы также предпочел шаблон, который можно использовать повторно, если это возможно.