Selles õpetuses õpime näidete abil tutvuma üksiku kujundusmustriga ja selle rakendamisega Javas.
Singleton on pigem kujundusmuster kui Java-le omane funktsioon. See tagab, et luuakse ainult üks klassi eksemplar.
Kujundusmuster on nagu meie koodikogu, mis sisaldab erinevaid kodeerimistehnikaid, mida programmeerijad jagavad kogu maailmas.
Java Singleton
Siit saate teada, kuidas saame Java-s kasutada üksikisikuid.
- luua
private
konstruktor, mis piirab objekti loomist väljaspool klassi - looge
private
üksikobjektile viitav atribuut. - luua
public static
meetod, mis võimaldab meil luua loodud objektile ja sellele juurde pääseda. Meetodi sees loome tingimuse, mis piirab meid mitme objekti loomisel.
Siin on näide.
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 ) )
Ülaltoodud näites
private static SingletonExample singleObject
- viide klassi objektile.private SingletonExample()
- erakonstruktor, mis piirab objektide loomist väljaspool klassi.public static SingletonExample getInstance()
- see meetod tagastab viite klassi ainsale objektile. Kuna meetod on staatiline, pääseb sellele juurde klassi nime abil.
Singletoni klassi kasutamine
Singletoneid saab kasutada andmebaasidega töötamisel. Nende abil saab luua andmebaasi juurdepääsuks ühenduse basseini, kasutades samasugust ühendust kõigile klientidele. Näiteks,
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(); ) )
Programmi käivitamisel on väljund:
Olete nüüd andmebaasiga ühendatud.
Meie ülaltoodud näites
- Oleme loonud ühe klassi andmebaasi.
- DbObject on klassi tüüpi väli. See viitab klassi andmebaasi objektile.
- Erakonstruktor
Database()
takistab objektide loomist väljaspool klassi. - Staatilise klassi tüübi meetod
getInstance()
tagastab klassi eksemplari välismaailmale. - Põhiklassis on meil klassi tüübi muutuja db1.
getInstance()
Andmebaasi ainsa objekti saamiseks helistame db1 abil. - Meetodile
getConnection()
pääseb juurde ainult andmebaasi objekti abil. - Kuna andmebaasil võib olla ainult üks objekt, saavad kõik kliendid andmebaasi juurde pääseda ühe ühenduse kaudu.
Oluline on märkida, et on üksikuid stsenaariume (näiteks logimine), kus üksikutel on mõtet. Isegi andmebaasiühendus ei tohiks tavaliselt olla üksik.
Kui te pole kindel, kas seda kasutada või mitte, soovitame teil üksikisikute kasutamist täielikult vältida. Lisateave: Mis on Singletonis nii halba?