2012-03-10 9 views

Odpowiedz

15

Najlepszym źródłem na C# singletons (obejmuje również Lazy<>) należy do Jon Skeet: http://csharpindepth.com/Articles/General/Singleton.aspx

Załóżmy, że chcesz mieć klasę, która:

  • reprezentuje unikalny zasób, więc powinien mieć unikalna instancja,
  • wystąpienie wymaga kosztownej inicjalizacji,
  • parametry inicjowania będą dostępne tylko w czasie wykonywania,
  • istnieją przypadki, które nie będą korzystać z obiektu Wszakże
  • istnieje więcej niż jeden wątków, które mogą próbować zainicjować obiektu singleton jednocześnie
  • itp

Jeśli większość z powyższych warunki są prawdziwe, musisz upewnić się, że klasa jest Singleton, a unikalna instancja jest leniwie inicjowana (niezainicjowana, dopóki nie jest potrzebna). Jeśli wybierzesz C# 4.0 lub nowszy, użycie Lazy<> uprości Twój projekt, będzie bardziej czytelny i łatwiejszy do zapamiętania.

1

Docs powiedzieć

pomocą wystąpienie Łazach (z T), aby opóźnić tworzenie obiektu lub dużych zasobochłonnych lub wykonanie zasobochłonnych zadania, w szczególności gdy tworzenie lub wykonanie może nie wystąpić podczas okresu istnienia programu.

Tworzenie instancji singleton tylko wtedy, gdy jest to potrzebne.

Lazy inicjacja jest ogólnie przydatna, więc wszystkie koszty tworzenia nie są płacone, gdy aplikacja insitialises - może dać przyjemniejsze wrażenia użytkownika.