decorator (design pattern)

15
Decorator (design pattern) Bc. Martin Petruň 16.10.2012 SAI

Upload: guy-emerson

Post on 03-Jan-2016

48 views

Category:

Documents


6 download

DESCRIPTION

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. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Decorator  (design pattern)

Decorator (design pattern)

Bc. Martin Petruňa16.10.2012

SAI

Page 2: Decorator  (design pattern)

Zaradenie

• Prototype patrí medzi štrukturálne návrhové vzory

• Schéma:

Page 3: Decorator  (design pattern)

Zaradenie

• Prototype patrí medzi štrukturálne návrhové vzory

• Schéma:

Page 4: Decorator  (design pattern)

Úč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.

Page 5: Decorator  (design pattern)

Príklad

Page 6: Decorator  (design pattern)

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

Page 7: Decorator  (design pattern)

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.

Page 8: Decorator  (design pattern)

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

Page 9: Decorator  (design pattern)

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

Page 10: Decorator  (design pattern)

Dekorátory a Java

Dekorátory a Java EE• Štandardná súčasť Java EE definovaná ako súčasť JSR-

299 CDI špecifikácie.

Page 11: Decorator  (design pattern)

Kontrakt objektu ktorý dekorujem

Dekorátor spĺňa kontrakt

Page 12: Decorator  (design pattern)

Dekorátor odkazuje na objekt

Page 13: Decorator  (design pattern)

Dekorátor mení správanie objektu

Page 14: Decorator  (design pattern)

Stačí registrácia v bean bundli (akékoľvek .war-ko alebo .ear-ko alebo .ejb-ko) ...

... o zvyšok sa postará kontajer.

Page 15: Decorator  (design pattern)

Ďakujem za pozornosť!