Mam napisaną grę planszową pod Androida. Gra posiada własną klasę. Zawsze będzie tworzony jeden i tylko jeden obiekt klasy. Czy powinien zastosować wzorzec singleton?
Czy to odpowiedni moment aby zastosować wzorzec?
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Space: the final frontier
- Postów: 26433
A musisz? Bo rozumiesz że singleton nie wynika z tego że jest jeden obiekt, tylko z tego że jest jeden obiekt którego potrzebuje wiele innych obiektów. Singleton to jest sposób na dostarczenie zależności do innych obiektów, tak samo jak Service Locator czy Dependency Injection. Sam fakt że jakiś obiekt jest jeden o niczym nie świadczy, chyba że jest bardzo kosztowny w konstrukcji.
- Rejestracja: dni
- Ostatnio: dni
- Postów: 627
Forum nie czytasz? Singleton to zło. W takim razie odpowiedź brzmi - nie. :)
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Stacktrace
- Postów: 6823
Nie o to chodzi, że nic nie da, ale o to, że nie jest potrzebny. Paradoksalnie singleton nie powinien być implementowany przez programistów w ramach ich kodu. Singleton choć jest wzorcem kreacyjnym powinien znajdować się na poziomie języka (np. w scali masz object) i być deklaratywny.
W twojej implementacji masz już singleton. Po prostu w domenie aplikacji jest tylko jeden obiekt i kod zapewnia, że będzie tylko jeden obiekt. Zaszycie implementacji w jakiś hardkorowy sposób jest niepotrzebne. Jak już bardzo chcesz coś naklepać to obuduj tworzenie obiektu przez fabrykę by mieć jakiś bufor pomiędzy swoim kodem i konstruktorem. Tylko tyle i aż tyle.