.NET i takie tam

W obronie singletonu

leave a comment »

Singleton jest jednym ze wzorców projektowych. Jego zadaniem jest zapewnienie istnienia tylko jednej instancji danej klasy i umożliwienie globalnego dostępu do niej. W C# przykładowo może wyglądać to tak:

public sealed SingletonClass
{
  private SingletonClass() {}

  public static readonly SingletonClass Instance = new SingletonClass();
}

Wiele osób uważa, że stosowanie singletonów jest przejawem złej architektury gdyż wprowadzają one ścisłe powiązania między poszczególnymi klasami, co z kolei utrudnia pisanie testów. W zupełności się z tym zgadzam, jednak, jeśli mam wybierać pomiędzy zmiennymi globalnymi to z dwojga złego wolę wykorzystać singleton. Przynajmniej pomoże pogrupować ‚zmienne’ w jakąś logiczną strukturę.

Poza tym nie tak naprawdę singleton’ów, nie da się całkowicie uniknąć, z dwóch powodów:

  • Pomimo tego, co niektórzy twierdzą, istnieją sytuacje wymagające ich zastosowania jak na przykład interakcja z hardwarem.
  • Wydajność – i nie chodzi mi tu o aplikacje serwerowe itp. – ale te mniejsze pracujące przykładowo na urządzeniach przenośnych.

Written by sakowicz

Lipiec 16, 2008 @ 9:32 am

Napisane w .NET, Design patterns

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Log Out / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Log Out / Zmień )

Facebook photo

Komentujesz korzystając z konta Facebook. Log Out / Zmień )

Google+ photo

Komentujesz korzystając z konta Google+. Log Out / Zmień )

Connecting to %s

%d bloggers like this: