1 / 16

Creational design patterns Singleton

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

taini
Download Presentation

Creational design patterns Singleton

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CreationaldesignpatternsSingleton Miroslav Sajko

  2. 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 windowmanager, 1 „továreň“ na objekty, ... • Vo všeobecnosti ide o rôzne managery • Chceme mať k tejto inštancii jednoduchý prístup

  3. 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 toit)

  4. 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

  5. Dôsledky • 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

  6. Implementácia • 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 • Eagerinstantiation (horlivá) – okamžité vytvorenie inštancie • Riešenie BillaPugha • Enum

  7. Sample – Lazy instantiation

  8. Sample – Eagerinstantiation

  9. Sample – BillPughsolution

  10. Sample – Enum

  11. Subclassing • 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

  12. Subclassing

  13. Subclassing

  14. Využitie v praxi • Loggers • Konfiguráčné nastavenia pre aplikáciu • Pristupovanie k zdieľaným zdrojom • Factoriesimplementované ako singletony

  15. Zdroje • 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/lectures/Singleton-2pp.pdf

  16. Ďakujem za pozornosťOtázky? Kontakt: miroslav.sajko@student.upjs.sk

More Related