弱参照或工厂模式

时间:2016-07-12 08:55:11

标签: c# factory-pattern weak-references

我在C#中读到了一些关于Weakreference类的内容,但我不确定它的用法。

我有一张超过10或20k条目的大桌子。 当我编写一个List DBFoos时,其中Foo是数据库中的对象。

如果用户只读取并且模式仅用于类之间的通信,那么使用Weakreference而不是Factory / Singelton Pattern的优势在哪里,因为对象的下载需要一段时间?

修改

我在MSDN

上找到了一个例子

他们使用Weakreference Dictionary,如:

public class Cache
{
    // Dictionary to contain the cache.
    public static Dictionary<int, WeakReference> _cache;

如果我使用List设置此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,还是只是一种复杂的保存方式?

1 个答案:

答案 0 :(得分:1)

弱引用用于创建缓存,您在缓存中存储弱引用以让垃圾收集器执行作业,因此有时您必须从数据库重新加载一些元素。 使用Singleton,它将创建静态缓存,但不会被使用,但如果有足够的内存,它可以正常工作。

Is there a practical use for weak references?