2016-07-12 65 views
3

我讀了一些關於C#中的Weakreference類,但我不確定它的用法。弱引用或工廠模式

我有一個超過10或20K條目的巨大表。 當我寫例如一個List DBFoos,其中Foo是來自數據庫的對象。

如果用戶只讀且模式僅用於類之間的通信,則使用Weakreference代替Factory/Singelton模式的優勢在哪裏,因爲下載對象需要一段時間?

編輯

我發現MSDN

一個例子,他們使用的WeakReference詞典,如:

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

如果我在這個高速緩存中使用的我的列表對象,而不是Singelton喜歡:

public class Foo{ 
private static Foo foo; 
static Foo getreference(){ 

if(foo == null){ 
foo = new Foo(); 
return foo; 
} 
else 
return foo; 
} 
} 

使用Weakreference是否有任何優勢或劣勢,例如通過GC進行收集,還是僅僅是一種拯救它的複雜方式?

+0

你想實現什麼? – Haukinger

+0

解釋什麼和什麼時候使用,如果可能的話,這兩個「模式」之間的優勢/劣勢將會很好 – SeeuD1

+2

你正在比較蘋果和橘子。那些東西不同於其他東西。你有看到那些代碼嗎? – Euphoric

回答

1

弱引用是用來製作一個緩存,你在緩存中存儲弱引用讓垃圾回收器做的是工作,所以有時候你必須從數據庫中重新加載一些元素。 與單身人士它會使靜態緩存不垃圾,但如果有足夠的內存,它工作正常。

Is there a practical use for weak references?