Слабая ссылка или фабричный образец
Я читал кое-что о Weakreference Class в C#, но я не уверен в его использовании.
У меня есть огромная таблица с более чем 10 или 20 тысячами записей. Когда я пишу, например, список DBFoos, где Foo являются объектами из базы данных.
Где преимущество использования Weakreference вместо Factory/Singelton Pattern, если пользователь только для чтения и этот шаблон предназначен только для связи между классами, потому что загрузка объектов занимает некоторое время?
редактировать
Я нашел пример на MSDN
Они используют словарь Weakreference, как:
public class Cache
{
// Dictionary to contain the cache.
public static Dictionary<int, WeakReference> _cache;
Если я установлю в этом Cache свой объект со списком вместо использования Singelton Like:
public class Foo{
private static Foo foo;
static Foo getreference(){
if(foo == null){
foo = new Foo();
return foo;
}
else
return foo;
}
}
Есть ли какое-либо преимущество или недостаток, например, сбор GC с использованием Weakreference, или это только сложный способ сохранить его?
1 ответ
Слабая ссылка используется для создания кэша, вы храните слабую ссылку в кэше, чтобы сборщик мусора мог выполнять свою работу, поэтому иногда вам нужно перезагрузить из базы данных некоторые элементы. С Синглтоном он создаст статический кеш, который не накапливается, но если памяти достаточно, он работает нормально.