Слабая ссылка или фабричный образец

Я читал кое-что о 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 ответ

Решение

Слабая ссылка используется для создания кэша, вы храните слабую ссылку в кэше, чтобы сборщик мусора мог выполнять свою работу, поэтому иногда вам нужно перезагрузить из базы данных некоторые элементы. С Синглтоном он создаст статический кеш, который не накапливается, но если памяти достаточно, он работает нормально.

Есть ли практическое применение слабым ссылкам?

Другие вопросы по тегам