2016-07-12 16 views
3

Ich habe etwas über die Weakreference-Klasse in C# gelesen, aber ich bin mir nicht sicher über die Verwendung davon.Weakreference oder Factory Pattern

Ich habe eine riesige Tabelle mit über 10 oder 20k Einträge. Wenn ich zum Beispiel eine List DBFoos schreibe, sind Foo Objekte aus der Datenbank.

Wo ist der Vorteil der Verwendung von Weakreference anstelle von Factory/Singelton Pattern, wenn der Benutzer nur liest und das Muster nur für die Kommunikation zwischen den Klassen ist, weil der Download von Objekten eine Weile dauert?

bearbeiten

fand ich ein Beispiel auf MSDN

Sie einen WeakReference Wörterbuch verwenden wie:

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

Wenn ich in diesem Cache mein Objekt mit der Liste statt mit einem Satz Singelton Gefällt mir:

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

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

Gibt es irgendwelche Vorteile oder Nachteile wie das Sammeln durch den GC mit Weakreference oder ist es nur eine komplexe Art, es zu speichern?

+0

Was möchten Sie erreichen? – Haukinger

+0

Eine Erklärung, was und wann zu verwenden und wenn möglich, die Vorteile/Nachteile zwischen diesen beiden "Muster" wäre nett – SeeuD1

+2

Sie vergleichen Äpfel und Orangen. Diese Dinge sind anders als die anderen. Hast du einen Code, wo du diese siehst? – Euphoric

Antwort

1

Weakreference wird verwendet, um einen Cache zu machen, speichern Sie weakreference im Cache, um Garbage Collector zu tun, ist Aufgabe, so dass Sie einige Zeit aus der Datenbank einige Elemente neu laden müssen. Mit Singleton wird es statischen Cache machen, der nicht garbaged ist, aber wenn genügend Speicher vorhanden ist, funktioniert es gut.

Is there a practical use for weak references?