1 / 15

Decorator (design pattern)

Decorator (design pattern). Bc. Martin Petru ňa 16 .10.2012 SAI. Zaradenie. Prototype patrí medzi štrukturálne návrhové vzory Schéma:. Zaradenie. Prototype patrí medzi štrukturálne návrhové vzory Schéma:. Účastníci.

guy-emerson
Download Presentation

Decorator (design pattern)

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. Decorator (design pattern) Bc. Martin Petruňa 16.10.2012 SAI

  2. Zaradenie • Prototype patrí medzi štrukturálnenávrhové vzory • Schéma:

  3. Zaradenie • Prototype patrí medzi štrukturálnenávrhové vzory • Schéma:

  4. Účastníci • Component– definuje rozhranie pre dynamické pridávanie správania/vlastností. • ConcreteComponent – definuje objekt, ktorému možno dynamicky pridávať správanie/vlastnosti. • Decorator– drží referenciu na Component objekt a zároveň implementuje rozhranie kompatibilné z Component. • ConcreteDecorator – pridáva správanie/vlastnosti objektu typu Component.

  5. Príklad

  6. Využitie • Dynamické a transparentné pridávanie a odoberanie správania/vlastností objektom • Ako alternatíva k dedičnosti, v prípade ak tá nie je použiteľná alebo by spôsobila vznik množstva podtried • Dekorovaný objekt nevie o tom že je dekorovaný.

  7. Výhody • Flexibilnejšia ako dedičnosť: • Možnosť pridávať a odoberať správanie/vlastnosti dynamicky za behu. • Nie je nutné vytvárať množstvo tried pre zachytenie všetkých kombinácií. • Možnosť mixovať rôzne správanie dokopy a viacnásobne. • Je možné sa vyhnúť tvorbe komplexných tried mysliacich na budúcnosť, namiesto toho zložitosť narastá postupne podľa potreby.

  8. Nevýhody • Flexibilnejšia ako dedičnosť: • Programátor sa nemusí obmedzovať a môže si vytvárať množstvo malých objektov presne na mieru. • Dekorovaný objekt nie je to isté ako reťazec jeho dekorátorov. • Objekty sa nelíšia typom, ale dynamickým zostavením a štruktúrou (náročné na orientáciu). • Pamäťový a rýchlostný overhead (v prípade dlhého zreťazenia alebo ťažkých dekorátorov/komponentu).

  9. Vzťahy k ďalším vzorom • Dekorátor • narozdiel od Adaptéru nemení rozhranie, len správanie/vlastnosti. • je možné vnímať ako Composite s jedným objektom. Dekorátor však rozširuje správanie a nie je určený na agregáciu. • je alternatívou zmeny správania objektu k Strategy; v druhom prípade je možné vyňať časť správania do samostatného objektu, čo sa už ale nezaobíde bez spolupráce objektu, ktorého správanie chcem urobiť „generickejším“.

  10. Dekorátory a Java Dekorátory a Java EE • Štandardná súčasť Java EE definovaná ako súčasť JSR-299 CDI špecifikácie.

  11. Kontrakt objektu ktorý dekorujem Dekorátor spĺňa kontrakt

  12. Dekorátor odkazuje na objekt

  13. Dekorátor mení správanie objektu

  14. Stačí registrácia v beanbundli (akékoľvek .war-ko alebo .ear-ko alebo .ejb-ko) ... ... o zvyšok sa postará kontajer.

  15. Ďakujem za pozornosť!

More Related