Návrhový vzor singleton patří do základní výbavy každého programátora. Jeho podstatou je vytvoření pouze jedné instance bezestavového objektu, která se používá napříč celou aplikací. Díky tomu, že je značná část tříd z principu bezestavová (data access objecty, service objekty atp.), se dá tímto způsobem ušetřit značné množství paměti.


Kód

 /**
  * Singleton, ktery se zinicializuje pri nacteni tridy
  * @author Pavel Micka
  */
 class EagerSingleton{
     /**
      * Staticka promenna zajisti EAGER inicilizaci (pri nacteni tridy)
      */
     public static final EagerSingleton SELF = new EagerSingleton();
     /**
      * Skryty konstuktor => Nelze tvorit dalsi instance
      */
     private EagerSingleton(){}
     /**
      * Testovaci metoda
      */
     public void foo(){
         System.out.println("foo");
     }
 }
 /**
  * Singleton s on-demand inicializaci
  * @author Pavel Micka
  */
 class LazySingleton{
     /**
      * Samotny objekt
      */
     private static LazySingleton self;
     /**
      * Skryty konstuktor => Nelze tvorit dalsi instance
      */
     private LazySingleton(){};
     /**
      * Lazy inicializace singletonu (az pri prvnim pozadavku), metoda
      * musi byt synchronizovana (aby byla zajistena bezpecnost pristupu
      * vice vlaken)
      * @return singleton
      */
     public static synchronized LazySingleton getInstance(){
         if(self == null){
             self = new LazySingleton();
         }
         return self;
     }
     /**
      * Testovaci metoda
      */
     public void foo(){
         System.out.println("foo");
     }
 }
 

Singleton od verze Java 5 může být vytvořen i pomocí konstrukce výčtového typu Enum:


Kód

  /**
  * Singleton pomocí výčtu ENUM
  * @author Pavel Stančík
  */
enum Singleton
{
    INSTANCE;

// proměnné instance, konstruktor
    private final Connection connection;

    Singleton()
     {
        // Inicializace např. připojení k databázi
        connection = DB.getConnection();
     }

// Statický getter
    public static Singleton getInstance()
    {
        return INSTANCE;
    }

    public Connection getConnection()
    {
        return connection;
    }
}
     //Následně můžeme zavolat instanci singletonu
     final Singleton s = Singleton.getInstance()

     

Tento typ singletonu je automaticky thread-safe, jelikož hodnota výčtového typu enum se inicializuje pouze jednou. Bohužel, pokud v tomto výčtovém typu voláte metodu, která thread-safe není, vznikne problém, v tom případě je nutné použít v definici metody klíčové slovo synchronized, vznikne synchronizovaná metoda, která nedovolí modifikovat předchozí inicializovaný objekt, dokud jej zpracovává předchozí vlákno. Jakmile jej první vlákno uvolní, dostane se ke slovu vlákno další.

Literatura

  • PECINOVSKÝ, Rudolf. Návrhové vzory. 1. vyd. [s.l.] : Computer press, 2007. 527 s. ISBN 978-80-2511582-4.

SEO od společnosti Digital Pylon


Online casino s algoritmem

České casino online online slot-vegas.cz

Hrajte nejlepší hry jako je GoodGame Empire.





Zajímavé články: Jak najít práci snů? Zvolte kariéru v IT!, Češi mají rádi hrací automaty online, Jak funguje algoritmické obchodování Casino, Online výuka Algoritmus a online marketing mají svá pravidla, Automaty, Matematický vliv, Ratings, Jak fungují algoritmy hazardních her online: více znalostí, více peněz, SYPWAI - nástroj pro vědecký vývoj, Vynikají na globálním trhu: Nejlepší vývojáři softwaru pro online výherní automaty, Jak si vybrat nejlepší české online casino, Proč byste měli hrát online casino VPN revoluce, Kde najdeme algoritmy v každodenním životě?, Čeká vás pracovní pohovor mimo město? Podívejte se, jak dokonale zvládnout včasný příchod, 5 úžasných technologií ze světa hazardních her, Mirror and access to Mostbet, Svou kancelář můžete mít stále po ruce, Jaké výhody má digitalizovaná firma oproti off-line konkurenci?, Jaký systém vybrat pro snadné řízení výroby?, Nahradí umělá inteligence ajťáky?, Důvody, proč používat SnapTik ke stahování videí TikTok, Dokonalý den na pláži: Co si vzít s sebou, aby byl výlet zábavný a bezpečný?, Jak přežít dlouhý let?, Go pay GoodGame Empire, Blockchain, Rozhovor, Umělá inteligence