Decorator

Decorator UML class diagram

Een decorator is een ontwerppatroon voor objectoriëntatie dat dynamisch extra functionaliteit toevoegt aan een object. Dit is flexibeler dan uitbreiding van functionaliteit door middel van subklassen. Decorator behoort tot de structuurpatronen.

Toepassing

Het patroon is van toepassing in situaties waarbij aan objecten nu eens de ene en dan weer de andere functionaliteit toegevoegd wordt. Indien overerving gebruikt zou worden zou voor elke combinatie van functionaliteiten een subklasse geschreven moeten worden hetgeen al snel inefficiënt wordt in termen van onderhoudbaarheid van broncode.

Een ander voordeel is dat de functionaliteit ter plekke weer kan worden opgeheven.

Grootste nadeel is dat er een nieuw (decorator-)object gemaakt wordt terwijl bij overerving de functionaliteit aan hetzelfde object wordt toegevoegd.

Een andere methode om soortgelijke problematiek het hoofd te bieden is het strategy-patroon. Net als overerving wordt de functionaliteit aan hetzelfde object toegevoegd.

Gedrag

Structuur

UML diagram van het decoratorpatroon
UML diagram van het decoratorpatroon

Werking en eigenschappen

Implementatie-overwegingen