Java Singleton (z przykładem)

W tym samouczku nauczymy się na przykładach wzorca projektowania singleton i jak go zastosować w Javie.

Singleton to raczej wzorzec projektowy niż funkcja specyficzna dla języka Java. Zapewnia, że ​​zostanie utworzona tylko jedna instancja klasy.

Wzorzec projektowy przypomina naszą bibliotekę kodu, która obejmuje różne techniki kodowania używane przez programistów na całym świecie.

Java Singleton

Oto, jak możemy używać singletonów w Javie.

  • utworzyć privatekonstruktora, który ogranicza możliwość tworzenia obiektu poza klasą
  • utwórz privateatrybut, który odwołuje się do obiektu singleton.
  • stworzyć public staticmetodę, która pozwala nam tworzyć i uzyskiwać dostęp do stworzonego przez nas obiektu. Wewnątrz metody utworzymy warunek, który ogranicza nam możliwość tworzenia więcej niż jednego obiektu.

Oto przykład.

 class SingletonExample ( // private field that refers to the object private static SingletonExample singleObject; private SingletonExample() ( // constructor of the SingletonExample class ) public static SingletonExample getInstance() ( // write code that allows us to create only one object // access the object as per our need ) ) 

W powyższym przykładzie

  • private static SingletonExample singleObject - odniesienie do przedmiotu zajęć.
  • private SingletonExample() - prywatny konstruktor, który ogranicza tworzenie obiektów poza klasą.
  • public static SingletonExample getInstance()- ta metoda zwraca odwołanie do jedynego obiektu klasy. Ponieważ metoda statyczna jest dostępna, można uzyskać do niej dostęp za pomocą nazwy klasy.

Korzystanie z klasy singleton

Podczas pracy z bazami danych można używać singletonów. Można ich użyć do utworzenia puli połączeń, aby uzyskać dostęp do bazy danych, używając tego samego połączenia dla wszystkich klientów. Na przykład,

 class Database ( private static Database dbObject; private Database() ( ) public static Database getInstance() ( // create object if it's not already created if(dbObject == null) ( dbObject = new Database(); ) // returns the singleton object return dbObject; ) public void getConnection() ( System.out.println("You are now connected to the database."); ) ) class Main ( public static void main(String() args) ( Database db1; // refers to the only object of Database db1= Database.getInstance(); db1.getConnection(); ) ) 

Kiedy uruchomimy program, wynik będzie:

 Jesteś teraz połączony z bazą danych. 

W naszym powyższym przykładzie

  • Stworzyliśmy bazę danych klasy pojedynczej.
  • DbObject jest polem typu klasy. Będzie to odnosić się do obiektu klasy Database.
  • Konstruktor prywatny Database()zapobiega tworzeniu obiektów poza klasą.
  • Metoda typu klasy statycznej getInstance()zwraca instancję klasy do świata zewnętrznego.
  • W klasie Main mamy zmienną typu db1. Wzywamy getInstance()użyciu DB1 uzyskać tylko obiekt bazy danych.
  • getConnection()Dostęp do metody można uzyskać tylko za pomocą obiektu bazy danych.
  • Ponieważ baza danych może mieć tylko jeden obiekt, wszyscy klienci mogą uzyskiwać dostęp do bazy danych za pośrednictwem jednego połączenia.

Należy zauważyć, że jest tylko kilka scenariuszy (takich jak rejestrowanie), w których pojedyncze elementy mają sens. Nawet połączenie z bazą danych zwykle nie powinno być singletonem.

Zalecamy całkowite unikanie używania singletonów, jeśli nie masz pewności, czy ich użyć, czy nie. Dowiedz się więcej: Co jest takiego złego w Singletonie?

Interesujące artykuły...