Java Singleton (cu exemplu)

În acest tutorial, vom învăța despre modelul de proiectare singleton și cum să-l aplicăm în Java cu ajutorul exemplelor.

Singleton este mai degrabă un model de design decât o caracteristică specifică Java. Se asigură că se creează o singură instanță a unei clase.

Un model de proiectare este ca biblioteca noastră de coduri care include diverse tehnici de codare partajate de programatori din întreaga lume.

Java Singleton

Iată cum putem folosi singletoni în Java.

  • creați un privateconstructor care restricționează pentru a crea un obiect în afara clasei
  • creați un privateatribut care se referă la obiectul singleton.
  • creați o public staticmetodă care ne permite să creăm și să accesăm obiectul pe care l-am creat. În interiorul metodei, vom crea o condiție care ne restricționează să creăm mai multe obiecte.

Iată un exemplu.

 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 ) ) 

În exemplul de mai sus,

  • private static SingletonExample singleObject - o referire la obiectul clasei.
  • private SingletonExample() - un constructor privat care restricționează crearea obiectelor în afara clasei.
  • public static SingletonExample getInstance()- această metodă returnează referința la singurul obiect al clasei. Deoarece metoda este statică, poate fi accesată folosind numele clasei.

Utilizarea clasei Singleton

Singletonii pot fi folosiți în timp ce lucrați cu baze de date. Ele pot fi utilizate pentru a crea un pool de conexiuni pentru a accesa baza de date, în timp ce refolosesc aceeași conexiune pentru toți clienții. De exemplu,

 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(); ) ) 

Când rulăm programul, ieșirea va fi:

 Acum sunteți conectat la baza de date. 

În exemplul nostru de mai sus,

  • Am creat o bază de date de clasă singleton.
  • DbObject este un câmp de tip clasă. Aceasta se va referi la obiectul clasei Baza de date.
  • Constructorul privat Database()împiedică crearea obiectelor în afara clasei.
  • Metoda de tip static de clasă getInstance()returnează instanța clasei în lumea exterioară.
  • În clasa Main, avem variabila de tip clasă db1. Facem apel getInstance()folosind db1 pentru a obține singurul obiect al bazei de date.
  • Metoda getConnection()poate fi accesată numai folosind obiectul bazei de date.
  • Deoarece baza de date poate avea un singur obiect, toți clienții pot accesa baza de date printr-o singură conexiune.

Este important să rețineți că există doar câteva scenarii (cum ar fi înregistrarea în jurnal) în care singletonii au sens. Chiar și o conexiune la baza de date nu ar trebui, de obicei, să fie o singură singură.

Vă recomandăm să evitați complet utilizarea singleton-urilor dacă nu sunteți sigur dacă să o utilizați sau nu. Aflați mai multe: Ce este atât de rău la Singleton?

Articole interesante...