Singleton to wzorzec projektowy, który zapewnia, że klasa ma tylko jedną instancję i zapewnia globalny punkt dostępu do tej instancji. Jest on często używany w sytuacjach, gdzie potrzebne jest globalne zarządzanie zasobami, takich jak połączenia z bazą danych czy pliki konfiguracyjne. Wzorzec singleton może być również przydatny w przypadku, gdy chcemy mieć kontrolę nad dostępem do pewnych zasobów.
Implementacja Singletona w Java
W tej lekcji zbudujemy klasę Logger
, która będzie reprezentować prosty system logowania. Użyjemy wzorca singleton, aby zapewnić, że istnieje tylko jedna instancja tej klasy, która będzie używana do logowania wiadomości w całej aplikacji.
Klasa Logger
public class Logger {
// Statyczna zmienna przechowująca jedyną
// instancję klasy Logger
private static Logger instance;
// Prywatny konstruktor, aby zapobiec tworzeniu
// instancji z zewnątrz
private Logger() {}
// Statyczna metoda zwracająca instancję klasy Logger
public static Logger getInstance() {
if (instance == null) {
// Tworzenie instancji, jeśli jeszcze nie istnieje
instance = new Logger();
}
return instance;
}
// Metoda do logowania wiadomości
public void log(String message) {
// Wypisanie wiadomości na standardowe wyjście
System.out.println("Log: " + message);
}
}
Użycie Singletona
Teraz, gdy mamy już naszą klasę Logger
zaimplementowaną jako singleton, możemy jej używać w dowolnym miejscu naszej aplikacji, aby logować wiadomości.
public class Application {
public static void main(String[] args) {
// Pobranie instancji Loggera
Logger logger = Logger.getInstance();
// Logowanie wiadomości
logger.log("Aplikacja została uruchomiona");
}
}
Zalety i wady wzorca Singleton
- Zalety:
- Kontrolowana dostępność do zasobu.
- Oszczędność zasobów, ponieważ instancja jest tworzona tylko raz.
- Globalny punkt dostępu do instancji.
- Wady:
- Może być trudniejszy w testowaniu, ponieważ globalny stan może wpłynąć na inne testy.
- Używanie globalnych instancji może prowadzić do problemów z projektowaniem, jeśli nie jest stosowane ostrożnie.
Podsumowanie
Wzorzec projektowy Singleton jest potężnym narzędziem, które pozwala na kontrolę nad instancjami klas oraz globalny dostęp do nich. W tej lekcji zobaczyliśmy, jak zaimplementować wzorzec Singleton w Java za pomocą klasy Logger
. Ważne jest, aby pamiętać o zaletach i wadach tego wzorca oraz stosować go tam, gdzie jest to naprawdę uzasadnione. Singleton może być bardzo użyteczny, ale jego niewłaściwe zastosowanie może prowadzić do trudności w utrzymaniu kodu i jego testowaniu.
Jeżeli chcesz przyśpieszyć swoją naukę tworzenia stron chciałbym polecić mój kurs video Java w którym nauczysz się tego języka od podstaw do zaawansowanych jego aspektów.