16
Creational design patterns Singleton Miroslav Sajko

Creational design patterns Singleton

  • Upload
    taini

  • View
    67

  • Download
    0

Embed Size (px)

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 Presentation

Citation preview

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]