Java Singleton (su pavyzdžiu)

Šioje pamokoje sužinosime apie pavienio dizaino modelį ir kaip jį pritaikyti „Java“ pavyzdžių pagalba.

„Singleton“ yra dizaino modelis, o ne „Java“ būdinga funkcija. Tai užtikrina, kad bus sukurtas tik vienas klasės egzempliorius.

Dizaino modelis yra panašus į mūsų kodų biblioteką, į kurią įeina įvairios kodavimo technikos, kuriomis naudojasi viso pasaulio programuotojai.

Java Singleton

Štai kaip mes galime naudoti pavienius „Java“.

  • sukurti privatekonstruktorių, kuris riboja objekto sukūrimą už klasės ribų
  • sukurti privateatributą, nurodantį pavienį objektą.
  • sukurti public staticmetodą, leidžiantį mums sukurti ir pasiekti mūsų sukurtą objektą. Metodo viduje sukursime sąlygą, kuri neleidžia kurti daugiau nei vieno objekto.

Štai pavyzdys.

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

Ankstesniame pavyzdyje

  • private static SingletonExample singleObject - nuoroda į klasės objektą.
  • private SingletonExample() - privatus konstruktorius, ribojantis objektų kūrimą už klasės ribų.
  • public static SingletonExample getInstance()- šis metodas pateikia nuorodą į vienintelį klasės objektą. Kadangi metodas yra statinis, jį galima pasiekti naudojant klasės pavadinimą.

„Singleton“ klasės naudojimas

„Singletons“ gali būti naudojami dirbant su duomenų bazėmis. Jie gali būti naudojami kuriant ryšio telkinį, norint pasiekti duomenų bazę, tuo pačiu pakartotinai naudojant tą patį ryšį visiems klientams. Pavyzdžiui,

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

Kai vykdysime programą, išvestis bus:

 Dabar esate prisijungę prie duomenų bazės. 

Aukščiau pateiktame pavyzdyje

  • Mes sukūrėme pavienių klasių duomenų bazę.
  • DbObject yra klasės tipo laukas. Tai bus nuoroda į klasės duomenų bazės objektą.
  • Privatus konstruktorius Database()neleidžia kurti objektų už klasės ribų.
  • Statinio klasės tipo metodas getInstance()grąžina klasės egzempliorių į išorinį pasaulį.
  • Pagrindinėje klasėje turime klasės tipo kintamąjį db1. Skambiname getInstance()naudodami db1, kad gautume vienintelį duomenų bazės objektą.
  • Metodą getConnection()galima pasiekti tik naudojant duomenų bazės objektą.
  • Kadangi duomenų bazė gali turėti tik vieną objektą, visi klientai gali pasiekti duomenų bazę vienu ryšiu.

Svarbu pažymėti, kad yra tik keli scenarijai (pvz., Medienos ruoša), kai pavieniai asmenys turi prasmę. Net duomenų bazės ryšys paprastai neturėtų būti vienas.

Jei nesate tikri, ar naudoti, ar ne, rekomenduojame visiškai nevartoti pavienių vienetų. Sužinokite daugiau: kas yra blogo „Singleton“?

Įdomios straipsniai...