Java Singleton (s primerom)

V tej vadnici bomo s pomočjo primerov spoznali vzorec oblikovanja posameznika in kako ga uporabiti v Javi.

Singleton je oblikovni vzorec in ne značilnost, značilna za Javo. Zagotavlja, da je ustvarjen samo en primerek razreda.

Vzorec oblikovanja je podoben naši knjižnici kod, ki vključuje različne tehnike kodiranja, ki si jih delijo programerji po vsem svetu.

Java Singleton

Tukaj je opisano, kako lahko v Java uporabljamo posamezne posnetke.

  • ustvarite privatekonstruktor, ki omejuje ustvarjanje predmeta zunaj razreda
  • ustvari privateatribut, ki se nanaša na objekt singleton.
  • ustvarite public staticmetodo, ki nam omogoča ustvarjanje in dostop do predmeta, ki smo ga ustvarili. Znotraj metode bomo ustvarili pogoj, ki nas omejuje pri ustvarjanju več kot enega predmeta.

Tu je primer.

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

V zgornjem primeru je

  • private static SingletonExample singleObject - sklic na predmet razreda.
  • private SingletonExample() - zasebni konstruktor, ki omejuje ustvarjanje predmetov zunaj razreda.
  • public static SingletonExample getInstance()- ta metoda vrne sklic na edini predmet razreda. Ker je metoda statična, je do nje mogoče dostopati z imenom razreda.

Uporaba razreda Singleton

Posamezne posnetke lahko uporabljate pri delu z bazami podatkov. Uporabljajo se lahko za ustvarjanje področja povezav za dostop do baze podatkov, pri čemer se ista povezava uporabi za vse odjemalce. Na primer

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

Ko zaženemo program, bo rezultat:

 Zdaj ste povezani z bazo podatkov. 

V našem zgornjem primeru

  • Ustvarili smo podatkovno bazo posameznega razreda.
  • DbObject je polje vrste razreda. To se bo nanašalo na objekt razreda Database.
  • Zasebni konstruktor Database()preprečuje ustvarjanje predmetov zunaj razreda.
  • Metoda vrste statičnega razreda getInstance()vrne primerek razreda zunanjemu svetu.
  • V razredu Main imamo spremenljivko tipa razreda db1. Pozivamo getInstance()uporabo db1 dobiti le predmet v zbirki podatkov.
  • Do metode getConnection()je mogoče dostopati samo s pomočjo predmeta baze podatkov.
  • Ker ima lahko baza podatkov samo en objekt, lahko vsi odjemalci dostopajo do baze podatkov prek ene same povezave.

Pomembno je omeniti, da obstaja le nekaj scenarijev (kot je zapisovanje dnevnika), ko so posamezniki smiselni. Tudi povezava z bazo podatkov običajno ne bi smela biti enojna.

Priporočamo vam, da se popolnoma izogibate uporabi enojnih črk, če niste prepričani, ali ga uporabljati ali ne. Preberite več: Kaj je tako slabega pri Singletonu?

Zanimive Članki...