Creational design patterns Singleton

Post on 24-Feb-2016

67 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

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

Transcript

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: miroslav.sajko@student.upjs.sk

top related