In der objektorientierten Programmierung nutzt man verschiedene Strukturmuster, die unabhängig von der tatsächlich verwendeten Programmiersprache prinzipiell immer gleich funktionieren. Die Entwurfsmuster (Design Patterns) Adapter und Dekorator gehören zur Kategorie der Strukturmuster und werden als Wrapper bezeichnet.
Ein Adapter verhüllt zueinander inkompatible Schnittstellen zwischen einzelnen Klassen. Durch die Übersetzung einer Schnittstelle in eine andere können die Klassen wieder miteinander kommunizieren. Das ist besonders wichtig, wenn Klassen oder ganze Klassenbibliotheken in neuen Projekten weiterverwendet werden sollen. Diese Bibliotheken nutzen eindeutige, standardisierte Schnittstellen, die nicht verändert werden dürfen, da sie für eine Vielzahl an Programmen gültig sein sollen. Der Wrapper – hier der Adapter – stellt bei der Kommunikation das entscheidende Zwischenglied dar.
Ein Dekorator ermöglicht es, eine Klasse um zusätzliche Funktionen zu erweitern, ohne die Klasse selbst zu verändern. Der Dekorator hat gegenüber dem aufrufenden Programmobjekt dieselbe Schnittstelle wie die Originalklasse. Auf diese Weise muss im aufrufenden Objekt nichts verändert werden. Der Dekorator gibt als Wrapper die Aufrufe an die Klasse weiter. Neue Funktionen, die in der Klasse nicht enthalten sind, arbeitet der Dekorator direkt ab. Die Ergebnisse gibt er auf eine solche Weise zurück, dass sie dem aufrufenden Objekt wie Ergebnisse der dekorierten Klasse angezeigt werden.