creational design patterns singleton
DESCRIPTION
Creational design patterns Singleton. Miroslav Sajko. Modelová situácia. Pre niektoré triedy je dôležité, aby mali práve jednu inštanciu Mal by existovať 1 správca tlačiarní, 1 filesystem , 1 window manager , 1 „továreň“ na objekty, ... Vo všeobecnosti ide o rôzne managery - PowerPoint PPT PresentationTRANSCRIPT
Creational design patternsSingleton
Miroslav Sajko
Pre niektoré triedy je dôležité, aby mali práve jednu inštanciu
Mal by existovať 1 správca tlačiarní, 1 filesystem, 1 window manager, 1 „továreň“ na objekty, ...
Vo všeobecnosti ide o rôzne managery Chceme mať k tejto inštancii jednoduchý
prístup
Modelová situácia
Zaisti triede jedinú inštanciu a poskytni globálny prístupový bod k nej
(Ensure a class only has one instance, and provide a global point of access to it)
Singleton
Singleton v UML
Singleton definuje statickú metódu pomocou ktorej sa
pristupuje k unikátnej inštancii môže (aj nemusí) byť zodpovedná za vytvorenie
inštancie
Výhody: Kontrolovaný prístup k jedinej inštancii Možnosťprepracovania vnútornej logiky
pomocou dedenia Možnosť zmeny počtu inštancií Nevýhoda: Pri viacvláknových aplikáciách môžu 2
vlákna vytvoriť 2 inštancie Singletonu
Dôsledky
pomocou statickej metódy budú môcť klienti pristupovať k inštancii vytvorenej privátnym konštruktorom
Lazy instantiation (lenivá) – vytvorenie inštancie iba keď ešte neexistuje
Eager instantiation (horlivá) – okamžité vytvorenie inštancie
Riešenie Billa Pugha Enum
Implementácia
Sample – Lazy instantiation
Sample – Eager instantiation
Sample – Bill Pugh solution
Sample – Enum
MazeFactory s oddedenými triedami EnchantedMazeFactory a AgentMazeFactory, pričom chceme iba jednu triedu – singleton
1.) MazeFactory obsahuje statickú metódu instance(), ktorá rozhodne podľa parametra na vstupe, ktorú triedu bude inštancionalizovať (nevýhoda: public konštruktor)
2.) obe triedy majú vlastné instance() metódy a tým pádom môžem použiť private konštruktor
Subclassing
Subclassing
Subclassing
Loggers Konfiguráčné nastavenia pre aplikáciu Pristupovanie k zdieľaným zdrojom Factories implementované ako singletony
Využitie v praxi
Design Patterns: Elements of Reusable Object-Oriented Software
http://en.wikipedia.org/wiki/Singleton_pattern
http://cs.wikipedia.org/wiki/Singleton http://userpages.umbc.edu/~tarr/dp/lecture
s/Singleton-2pp.pdf
Zdroje
Ďakujem za pozornosťOtázky?
Kontakt: [email protected]