Beskriver hur klasser och objekt kan kombineras för att bilda större strukturer.
\
* Adapter
Används för att göra en annars inkompatibel klass kompatibel med klienten genom att innesluta den inkompatibla klassen i en kompatibel klass (dvs som implementerar ett interface som klienten kräver).
\
* Bridge
Används för att separera de abstrakta elementen i en klass från implementationen, så att implementationen kan ändras utan att behöva ändra på abstraktionen.
\
* Composite
Används för att skapa hierarkiska, rekursiva strukturer av relaterade objekt, där ett godtyckligt \n element i strukturen kan accessas och användas på vanligt sätt.
\
* Decorator
Används för att utöka eller ändra objekts funktionalitet under körtid genom att innesluta dem i en Decorator klass (alternativ till att använda arv).
\
* Façade
Används för att definiera ett enklare interface till ett mera komplext delsystem.
\
* Flyweight
Används för att minska resursanvändning för komplexa modeller som innehåller många liknande objekt.
\
* Proxy
Används för att skapa en surrogat-objekt, som refererar till ett underliggade objekt, och som implementerar samma interface som det underliggande objektet. Surrogat-objektet vidarebefordrar anrop från klienten till det underliggade objektet vid behov.
\