Top Banner
Creational design patterns Singleton Miroslav Sajko
16

Creational design patterns Singleton

Feb 24, 2016

Download

Documents

taini

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 Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Creational design patterns Singleton

Creational design patternsSingleton

Miroslav Sajko

Page 2: Creational design patterns Singleton

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

Page 3: Creational design patterns Singleton

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

Page 4: Creational design patterns 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

Page 5: Creational design patterns Singleton

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

Page 6: Creational design patterns Singleton

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

Page 7: Creational design patterns Singleton

Sample – Lazy instantiation

Page 8: Creational design patterns Singleton

Sample – Eager instantiation

Page 9: Creational design patterns Singleton

Sample – Bill Pugh solution

Page 10: Creational design patterns Singleton

Sample – Enum

Page 11: Creational design patterns Singleton

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

Page 12: Creational design patterns Singleton

Subclassing

Page 13: Creational design patterns Singleton

Subclassing

Page 14: Creational design patterns Singleton

Loggers Konfiguráčné nastavenia pre aplikáciu Pristupovanie k zdieľaným zdrojom Factories implementované ako singletony

Využitie v praxi

Page 15: Creational design patterns Singleton

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

Page 16: Creational design patterns Singleton

Ďakujem za pozornosťOtázky?

Kontakt: [email protected]