Java Singleton (s příkladem)

V tomto výukovém programu se na příkladech seznámíme s návrhovým vzorem singletonu a jeho použitím v Javě.

Singleton je spíše designový vzor než funkce specifická pro Javu. Zajišťuje, že je vytvořena pouze jedna instance třídy.

Návrhový vzor je jako naše knihovna kódů, která zahrnuje různé techniky kódování sdílené programátory po celém světě.

Java Singleton

Tady je ukázka, jak můžeme použít singletony v Javě.

  • vytvořte privatekonstruktor, který omezuje vytvoření objektu mimo třídu
  • vytvořte privateatribut, který odkazuje na singletonový objekt.
  • vytvořit public staticmetodu, která nám umožní vytvořit a přistupovat k objektu, který jsme vytvořili. Uvnitř metody vytvoříme podmínku, která nás omezuje ve vytváření více než jednoho objektu.

Zde je příklad.

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

Ve výše uvedeném příkladu

  • private static SingletonExample singleObject - odkaz na objekt třídy.
  • private SingletonExample() - soukromý konstruktor, který omezuje vytváření objektů mimo třídu.
  • public static SingletonExample getInstance()- tato metoda vrací odkaz na jediný objekt třídy. Vzhledem k tomu, že metoda je statická, lze k ní přistupovat pomocí názvu třídy.

Použití třídy Singleton

Singletony lze použít při práci s databázemi. Lze je použít k vytvoření fondu připojení pro přístup k databázi a opětovné použití stejného připojení pro všechny klienty. Například,

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

Když spustíme program, výstup bude:

 Nyní jste připojeni k databázi. 

V našem výše uvedeném příkladu

  • Vytvořili jsme databázi třídy singleton.
  • DbObject je pole typu třídy. Toto bude odkazovat na objekt třídy Database.
  • Soukromý konstruktor Database()brání vytváření objektů mimo třídu.
  • Metoda typu statické třídy getInstance()vrací instanci třídy do vnějšího světa.
  • V hlavní třídě máme proměnnou typu třídy db1. Voláme getInstance()pomocí db1, abychom získali jediný objekt databáze.
  • Metoda getConnection()je přístupná pouze pomocí objektu Databáze.
  • Protože databáze může mít pouze jeden objekt, mohou všichni klienti přistupovat k databázi prostřednictvím jediného připojení.

Je důležité si uvědomit, že existuje jen několik scénářů (například protokolování), kde singletony dávají smysl. Ani připojení k databázi by obvykle nemělo být singleton.

Pokud si nejste jisti, zda jej použít nebo ne, nedoporučujeme používat singletony úplně. Další informace: Co je na Singletonu tak špatného?

Zajímavé články...