Singleton w Java

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.

Scroll to Top