Návrhový vzor Object pool (Fond) použijeme, potřebujeme-li omezit počet vytvářených instancí, jejichž výroba je časově náročná, ale nepotřebujeme jich mnoho najednou. Pool upřednostňuje recyklaci (znovuvyužití) objektů před konstrukcí nových instancí.

Princip

Jádrem vzoru je samotná třída fondu, která zajišťuje vydávání a uchovávání instancí. Potřebuje-li aplikace instanci daného typu, obratí se na fond a ten jí tuto instanci propůjčí. V okamžiku, kdy již tato instance není zapotřebí, tak ji aplikace vrátí zpět do fondu pro budoucí využití.

Aspekty implementace fondu

Při programování fondu je zapotřebí brát ohled na přesné potřeby dané aplikace, zejména pak na následující aspekty.

Kapacita

Důležitým rozhodnutím z hlediska implementace je kapacita fondu, respektive, zda-li se může v čase měnit. Fond buď může být implementován velmi triviálně, kdy má omezenou předem definovanou kapacitu, nebo může obsahovat složitou logiku, která na základě potřeb aplikace zvyšuje kapacitu fondu (a dovytváří nové instance) nebo snižuje kapacitu fondu (a nechává instance smazat).

Blokování výběru

Druhým aspektem je chování fondu v momentě, kdy narazí na strop počtu instancí (je-li definován). Fond v tento okamžik může buď volání blokovat a čekat na vrácení některé instance, vrátit null, nebo vyhodit výjimku.

Garbage kolekce

Je zapotřebí si uvědomit, že pooling instancí má také vedlejší efekty z hlediska garbage kolekce a to zejména u generačních kolektorů. Život instancí spravovaných fondem by bez použití tohoto vzoru byl vetšinou velmi krátký – garbage collector by je sebral po jejich použití a zahození. V případě použití fondu jsou ale instance fakticky nesmrtelné a postupně se propracují do starší generace, čímž se komplikuje její kolekce.

Životní cyklus instancí

Posledním aspektem je životní cyklus instancí. Může se totiž stát, že fond nerozhoduje o tom, zda-li nebude některý ze zdrojů dané instance zneplatněn. Příkladem v tomto ohledu mohou být spojení, která mohou být vypovězena z druhé strany (například databázové spojení). Fond proto musí v příslušných případech také ověřovat platnost jednotlivých instancí.


Příklad

Implementujte fond, který bude spravovat fixní uživatelem zadané množství instancí objektu databázového spojení (spojení nemůže být uzavřeno ze strany databáze). V případě, že klient zažádá o spojení v okamžiku, kdy je fond prázdný, dostane prázdnou referenci (null)

Kód

/**
 * Demostrace vzoru Object pool
 * Fond ma fixni kapacitu
 * @author Pavel Micka
 */
class Pool{
    private Queue<DBConnection> queue;

    public Pool(int capacity) {
        this.queue = new LinkedList<DBConnection>();

        for(int i = 0; i < capacity; i++){
            queue.add(new DBConnection());
        }
    }
    /**
     * Vrati spojeni s databazi
     * @return spojeni s DB, @null pokud je pool prazdny
     */
    public synchronized DBConnection acquireObject(){
        return queue.poll();
    }
    /**
     * Vrati spojeni s DB do poolu
     * @param conn
     */
    public synchronized void releaseObject(DBConnection conn){
        queue.add(conn);
    }
}

/**
 * Trida reprezentujici spojeni s DB
 * @author Pavel Micka
 */
class DBConnection{
    /**
     * "Provede" select z databaze
     */
    public void select(){
        System.out.println("SELECT * FROM Table WHERE id = " + ((int)(Math.random()*100)));
    }
}

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