Java Singleton (esimerkin kanssa)

Tässä opetusohjelmassa opitaan yksinkertaisesta suunnittelumallista ja kuinka sitä voidaan käyttää Java-sovelluksessa esimerkkien avulla.

Singleton on pikemminkin suunnittelumalli kuin Java-ominaisuus. Se varmistaa, että luokkaan luodaan vain yksi esiintymä.

Suunnittelumalli on kuin koodikirjastomme, joka sisältää erilaisia ​​koodaustekniikoita, jotka ohjelmoijat jakavat ympäri maailmaa.

Java Singleton

Näin voimme käyttää singlettejä Javassa.

  • luoda privatekonstruktori, joka rajoittaa objektin luomista luokan ulkopuolelle
  • luoda privateattribuutti, joka viittaa yksittäiseen objektiin.
  • luoda public staticmenetelmä, jonka avulla voimme luoda luomamme objektin ja käyttää sitä. Menetelmän sisällä luomme ehdon, joka estää meitä luomasta useampaa kuin yhtä objektia.

Tässä on esimerkki.

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

Yllä olevassa esimerkissä

  • private static SingletonExample singleObject - viittaus luokan kohteeseen.
  • private SingletonExample() - yksityinen rakentaja, joka rajoittaa esineiden luomista luokan ulkopuolelle.
  • public static SingletonExample getInstance()- tämä menetelmä palauttaa viitteen luokan ainoaan objektiin. Koska menetelmä on staattinen, sitä voidaan käyttää luokan nimellä.

Singleton-luokan käyttö

Singletoneja voidaan käyttää tietokantojen kanssa työskenneltäessä. Niitä voidaan käyttää luomaan yhteyspooli tietokantaan pääsemiseksi samalla kun käytetään samaa yhteyttä kaikille asiakkaille. Esimerkiksi,

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

Kun suoritamme ohjelmaa, tulos on:

 Olet nyt yhteydessä tietokantaan. 

Yllä olevassa esimerkissämme

  • Olemme luoneet yksittäisen luokan tietokannan.
  • DbObject on luokan tyyppinen kenttä. Tämä viittaa luokan Tietokanta objektiin.
  • Yksityinen konstruktori Database()estää objektien luomisen luokan ulkopuolella.
  • Staattinen luokan tyypin menetelmä getInstance()palauttaa luokan esiintymän ulkomaailmaan.
  • Pääluokassa meillä on luokan tyyppinen muuttuja db1. Soitamme getInstance()db1: llä saadaksemme tietokannan ainoan objektin.
  • Menetelmää getConnection()voidaan käyttää vain tietokannan objektilla.
  • Koska tietokannalla voi olla vain yksi objekti, kaikilla asiakkailla on pääsy tietokantaan yhden yhteyden kautta.

On tärkeää huomata, että on vain muutama skenaario (kuten puunkorjuu), joissa yksittäisillä on järkevää. Jopa tietokantayhteyden ei yleensä tule olla yksittäinen.

Suosittelemme, että vältät yksittäisten kappaleiden käyttämisen kokonaan, jos et ole varma, haluatko käyttää sitä vai ei. Lisätietoja: Mikä on Singletonissa niin pahaa?

Mielenkiintoisia artikkeleita...