1 / 16

Chain of Responsibility

Chain of Responsibility. Autor: Milan Šafárik. Úvod. Tento vzor patrí do skupiny Behavioral Patterns . Vzor sa vyhýba spojeniu odosielateľa požiadavky s príjemcom tak, že umožní spracovať žiadosť viac ako jednému objektu.

errol
Download Presentation

Chain of Responsibility

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. ChainofResponsibility Autor: Milan Šafárik

  2. Úvod • Tento vzor patrí do skupiny BehavioralPatterns. • Vzor sa vyhýba spojeniu odosielateľa požiadavky s príjemcom tak, že umožní spracovať žiadosť viac ako jednému objektu. • Zreťazuje prijímacie objekty a odovzdáva požiadavku pozdĺž reťazca, kým ju nejaký objekt nespracuje.

  3. Motivácia • Príkladom využitia môže byť systém nápovedy pre grafické užívateľské rozhranie. Ak užívateľ potrebuje poradiť, klikne na danú časť rozhrania a dostane k nej nápovedu. Táto pomocná informácia závisí na časti rozhrania a jej kontexte. • Ak nie je špecifikovaná informácia pre nejakú časť rozhrania, potom by mal systém zobraziť všeobecnejšiu informáciu o kontexte.

  4. Motivácia Preto je prirodzené, organizovaťpomocné informácie podľa ich všeobecnosti - Od najviac konkrétnych ku najviac všeobecným. Pomocná požiadavka môže byť spracovaná jedným z niekoľkých userinterface objektov. Problémom je, že objekt, ktorý poskytuje pomoc nie je explicitne známy k objektu, ktorý inicializuje požiadavku. Tento vzor ukazuje spôsob, ako oddeliť objekt inicializujúci požiadavku od objektov, ktoré ju môžu spracovať.

  5. Motivácia Prvý objekt v reťazci prijme žiadosť a buď ju spracuje, alebo ju posunie ďalšiemu objektu v reťazci, ktorý robí to isté. Objekt, ktorý poslal požiadavku nemá žiadne znalosti o tom, kto požiadavku spracuje. Hovoríme, že požiadavka má implicitného prijímateľa.

  6. Motivácia

  7. Preposielaniepožiadavky Na preposielaniepožiadavkypo reťazci a zachovanie implicitných prijímateľov, každý objekt v reťazci zdieľa spoločné rozhranie pre spracovanie požiadavky a pre prístup k jeho nasledovníkovi v reťazci.

  8. Štruktúra

  9. Účastníci Handler • Definuje rozhranie pre spracovávanie žiadostí. • (voliteľné) implementuje prepojenie na nasledovníka. ConcreteHandler • Spracováva požiadavky, za ktoré je zodpovedný. • Môže pristupovať ku svojmu nasledovníkovi. • Ak môže spracovať požiadavku, spraví to. Inak ju prepošle nasledovníkovi. Client • Pošle požiadavku ku ConcreteHandlerv reťazci.

  10. Uplatnenie Použitie vzoru je vhodné ak: • Požiadavku môže spracovať viac ako jeden objekt a spracovávateľ nie je vopred známy. Spracovateľ sa má určiť automaticky. • Ak chceme vytvoriť žiadosť pre jedného z viacerých objektov bez uvedenia príjemcu. • Množina objektov, ktoré môžu spracovať požiadavku by mala byť určená dynamicky.

  11. Následky • Zjednodušuje prepojenie medzi objektmi - Ani prijímateľ ani odosielateľ nemajú žiadne vedomosti o sebe navzájom a objekt v reťazci nemusí nič vedieť o štruktúre reťazca. • Flexibilita - Zodpovednosť za spracovanie požiadavky môžeme upraviť pridaním alebo inou zmenou reťazca počas behu. • Spracovanie požiadavky nie je zaručené - Pretože žiadosť nemá uvedeného príjemcu, nie je istota, že bude spracovaná.

  12. Známe využitie Najzákladnejším príkladom využitia tohto vzoru je princíp dedičnosti. Ak je volaná funkcia triedy, ktorá tuto funkciu neobsahuje, dochádza k hľadaniu funkcie v triedach, z ktorých je dedená. Ďalejsa ChainofResponsibility zvykne využívať na spracovávanie userEvents(kliknutie myšou alebo stlačenie klávesy).

  13. Ukážkový kód

  14. Ukážkový kód

  15. Ukážkový kód

  16. Ďakujem za pozornosť

More Related