Java Singleton (s primjerom)

U ovom uputstvu naučit ćemo o uzorku dizajna pojedinca i kako ga primijeniti u Javi uz pomoć primjera.

Singleton je dizajnerski obrazac, a ne značajka specifična za Javu. Osigurava stvaranje samo jedne instance klase.

Uzorak dizajna je poput naše biblioteke koda koja uključuje razne tehnike kodiranja koje dijele programeri širom svijeta.

Java Singleton

Evo kako možemo koristiti singletone u Javi.

  • stvoriti privatekonstruktor koji ograničava stvaranje objekta izvan klase
  • stvoriti privateatribut koji se odnosi na singleton objekt.
  • stvoriti public staticmetodu koja nam omogućuje stvaranje i pristup objektu koji smo stvorili. Unutar metode stvorit ćemo uvjet koji nas ograničava u stvaranju više objekata.

Evo primjera.

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

U gornjem primjeru,

  • private static SingletonExample singleObject - referenca na objekt klase.
  • private SingletonExample() - privatni konstruktor koji ograničava stvaranje objekata izvan klase.
  • public static SingletonExample getInstance()- ova metoda vraća referencu na jedini objekt klase. Budući da je metoda statična, može joj se pristupiti pomoću naziva klase.

Korištenje klase Singleton

Jednotoni se mogu koristiti tijekom rada s bazama podataka. Mogu se koristiti za stvaranje spremišta veza za pristup bazi podataka, dok se ista veza ponovno koristi za sve klijente. Na primjer,

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

Kada pokrenemo program, izlaz će biti:

 Sada ste povezani s bazom podataka. 

U našem gornjem primjeru,

  • Stvorili smo bazu podataka singleton klase.
  • DbObject je polje tipa klase. To će se odnositi na objekt klase Database.
  • Privatni konstruktor Database()sprečava stvaranje predmeta izvan klase.
  • Metoda statičkog tipa klase getInstance()vraća instancu klase vanjskom svijetu.
  • U glavnoj klasi imamo varijablu tipa klase db1. Pozivamo getInstance()pomoću db1 da bismo dobili jedini objekt baze podataka.
  • Metodi getConnection()se može pristupiti samo pomoću objekta baze podataka.
  • Budući da Baza podataka može imati samo jedan objekt, svi klijenti mogu pristupiti bazi podataka putem jedne veze.

Važno je napomenuti da postoji samo nekoliko scenarija (poput bilježenja) kada pojedinačni tonovi imaju smisla. Čak i veza baze podataka obično ne bi trebala biti jednostruka.

Preporučujemo vam da u potpunosti izbjegavate upotrebu jednostrukih tonova ako niste sigurni želite li ih koristiti ili ne. Saznajte više: Što je toliko loše u Singletonu?

Zanimljivi članci...