
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.
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.
Structuur
Werking en eigenschappen