Java Singleton (példával)

Ebben az oktatóanyagban példák segítségével megismerhetjük a szingulett tervezési mintázatát és annak alkalmazását a Java-ban.

A Singleton inkább tervezési mintázat, mintsem a Java-ra jellemző szolgáltatás. Biztosítja, hogy egy osztályból csak egy példány készüljön.

A tervezési minta olyan, mint a kódkönyvtárunk, amely különféle kódolási technikákat tartalmaz, amelyeket a programozók világszerte megosztanak.

Java Singleton

Így használhatjuk a szingleteket a Java-ban.

  • hozzon létre egy privatekonstruktort, amely korlátozza az osztályon kívüli objektum létrehozását
  • hozzon létre egy privateattribútumot, amely a szingulett objektumra utal.
  • hozzon létre egy olyan public staticmódszert, amely lehetővé teszi számunkra az általunk létrehozott objektum létrehozását és elérését. A módszer belsejében létrehozunk egy feltételt, amely korlátoz minket egynél több objektum létrehozásában.

Itt egy példa.

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

A fenti példában

  • private static SingletonExample singleObject - hivatkozás az osztály objektumára.
  • private SingletonExample() - egy privát kivitelező, amely korlátozza az osztályon kívüli objektumok létrehozását.
  • public static SingletonExample getInstance()- ez a módszer visszaadja a hivatkozást az osztály egyetlen objektumára. Mivel a módszer statikus, az osztálynév segítségével érhető el.

A Singleton osztály használata

A szingulettek felhasználhatók az adatbázisokkal való munka közben. Ezekkel fel lehet használni egy kapcsolatkészlet létrehozását az adatbázis eléréséhez, miközben ugyanazt a kapcsolatot újból felhasználják az összes kliens számára. Például,

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

A program futtatásakor a kimenet a következő lesz:

 Most csatlakozik az adatbázishoz. 

A fenti példánkban

  • Létrehoztunk egy egyedi osztályú adatbázist.
  • A dbObject egy osztály típusú mező. Ez az osztály Database objektumára fog vonatkozni.
  • A privát konstruktor Database()megakadályozza az osztályon kívüli objektumok létrehozását.
  • A statikus osztálytípus módszer getInstance()az osztály példányát adja vissza a külvilágnak.
  • A Fő osztályban a db1 osztálytípusú változóval rendelkezünk. A getInstance()db1 használatával hívjuk meg az adatbázis egyetlen objektumát.
  • A módszer getConnection()csak az adatbázis objektumával érhető el.
  • Mivel az adatbázisnak csak egy objektuma lehet, az összes kliens egyetlen kapcsolaton keresztül férhet hozzá az adatbázishoz.

Fontos megjegyezni, hogy csak néhány olyan forgatókönyv létezik (például naplózás), ahol a szingletteknek van értelme. Még az adatbázis-kapcsolat sem lehet egyedi.

Javasoljuk, hogy kerülje a szingulettek teljes használatát, ha nem biztos abban, hogy használja-e vagy sem. Tudjon meg többet: Mi olyan rossz Singletonban?

érdekes cikkek...