1 / 15

Behavioral design patterns Command

Behavioral design patterns Command. Miroslav Sajko. Modelová situácia. V aplikáciách každé kliknutie na Button /Menu je požiadavkou na zmenu stavu Nie je možné požiadavky spracovať priamo v Button /Menu, lebo vždy záleží od kontextu

janus
Download Presentation

Behavioral design patterns Command

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. BehavioraldesignpatternsCommand Miroslav Sajko

  2. Modelová situácia • V aplikáciách každé kliknutie na Button/Menu je požiadavkou na zmenu stavu • Nie je možné požiadavky spracovať priamo v Button/Menu, lebo vždy záleží od kontextu • Nedá sa predpokladať, čo a na ktorom objekte sa bude diať • Príklad: každý MenuItem je previazaný s konkrétnym Commandom, ktorý určuje čo a kde udeje

  3. Modelová situácia

  4. Modelová situácia

  5. Command • Action, Transaction • Zapúzdripožiadavku ako objekt, aby bolo možné parametrizovať klientov s rôznymi požiadavkami, frontami alebo log požiadavkami a na podporu operácií, ktoré sa dajú vziať späť • (Encapsulate a request as an object, thereby letting you parameterizeclients withdifferent requests, queue or log requests, and supportundo-able operations)

  6. Command v UML • Command– určuje rozhranie pre vykonanie operácie • ConcreteCommand – definuje prepojenie medzi akciou a objektom, na ktorom sa bude operácia vykonávať • Client – vytvorí požiadavku a určí Receiver objekt • Invoker – vyvoláva požiadavku, ktorú dáva Commandu • Receiver – vie ako vykonať operácie spojené s vykonávaním požiadavky

  7. Command v UML

  8. Dôsledky • Oddelenie objektu, ktorý vyvolá akciu (MenuItem) od objektu, ktorý vie ako ju vykoná • Jednoduché pridávanie nových Commandov, pretože netreba meniť už existujúce • Môžeme spájaťCommands do spojených Commands, príkladom sú makrá • Command je objekt, takže môžeme ho extendovať

  9. Implementácia • Ako inteligentné majú byť Command objekty? • Hlúpe:delegujú akciu pre cieľový objekt • Chytré:implementujú sami všetko potrebné bez poverenia cieľového objektu • Podpora Undo/Redo • ConcreteCommand si okrem referencie na Receiver musí ukladať predchodzí stav, pri viacúrovňovom Undo aj širšiu históriu, pričom treba dávať pozor na akumulované chyby (zaistiť konzistentný stav objektov – Memento)

  10. Sample

  11. Sample

  12. Sample

  13. Využitie v praxi • MenuItems, Buttons a vo všeobecnosti všetky GUI objekty (actionPerformed() vo Swing-u) • Undo a Redo • Makrá • Wizardy • ThreadPooly – queue na požiadavky • Požiadavky posielané po sieti • Paralelné výpočty

  14. Zdroje • Design Patterns: Elements of Reusable Object-Oriented Software • http://en.wikipedia.org/wiki/Command_pattern • http://userpages.umbc.edu/~tarr/dp/lectures/Command.pdf • http://objekty.vse.cz/Objekty/Vzory-Command

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

More Related