Lecture overview -- Keyboard shortcut: 'u'  Previous page: Decorator (1) -- Keyboard shortcut: 'p'  Next page: Decorator (3) -- Keyboard shortcut: 'n'  Lecture notes - all slides and notes together  slide -- Keyboard shortcut: 't'  Help page about these notes  Alphabetic index  Course home  Page 24 : 31
Forelæsningsnoter i Objekt-orienteret Programmering
Designmønstre
Decorator (2)

Nu hvor vi har set på den dynamiske objekt-struktur af Decorator vil vi se på (et eksempel på) den statiske klasse-struktur

Et eksempel på anvendelse af Decorator designmønstret. I eksemplet dekoreres tekst view med scrollbars og border. Når en decorator tegner sig selv tegnes også det dekorerede objekt, som igen kan være en dekorator, eller ultimativ et tekst view objekt i dette eksempel.

En klient, som arbejder på et TextView objekt, skal arbejde med en reference af typen VisualComponent. Da både et TextView og de forskellige decorator objekter er VisualComponents hænger det hele samme rent typemæssig, via typersammenlignelighed reglerne i Java.

Konsekvenser:

  • Mere fleksibel end udvidelse via nedarvning (evt. multipel nedarvning)

  • Det, som naturligt er ét objekt, ender med at være repræsenteret som flere objekter i en kæde

    • Potentielle problemer med objektidentitet

Objekterne i kæden kan siges at delegere arbejde til hinanden. Vi har tidligere i materialet mødt delegering, og vi har konsteret at delegering undertiden er et alternativ til nedarvning. I denne sammenhæng bliver det understreget, at delegering er et mere dynamisk alternativ en nedarvning.

Når en klasse B arver fra A, er instanser af B hele objekter uden nogen form for delobjekter. Når et B-objekt derimod delegerer arbejdet til et A-objekt er der to objekter i spil. På denne måde er identiteten af fænomenet delt ud på to separate objekter, hvilket kan give komplikationer i visse sammenhænge.