Wzorce strukturalne
Wzorce strukturalne wyjaśniają w jaki sposób można składać obiekty i klasy w większe struktury zachowując przy tym elastyczność i efektywność tych struktur.
![Adapter](/images/patterns/cards/adapter-mini.png?id=b2ee4f681fb589be5a0685b94692aebb)
Pozwala na współdziałanie obiektów o niekompatybilnych interfejsach.
![Most](/images/patterns/cards/bridge-mini.png?id=b389101d8ee8e23ffa1b534c704d0774)
Pozwala podzielić dużą klasę lub blisko spokrewnione ze sobą klasy na dwie hierarchie: abstrakcję oraz implementację, nad którymi można pracować niezależnie od siebie.
![Kompozyt](/images/patterns/cards/composite-mini.png?id=a369d98d18b417f255d04568fd0131b8)
Pozwala komponować obiekty w struktury drzewiaste, a potem traktować je tak, jakby były one osobnymi obiektami.
![Dekorator](/images/patterns/cards/decorator-mini.png?id=d30458908e315af195cb183bc52dbef9)
Pozwala nadać dodatkowe obowiązki obiektom poprzez umieszczenie tych obiektów w specjalnych obiektach opakowujących, które zawierają odpowiednie zachowania.
![Fasada](/images/patterns/cards/facade-mini.png?id=71ad6fa98b168c11cb3a1a9517dedf78)
Wyposaża bibliotekę, framework lub inny złożony zestaw klas w uproszczony interfejs.
![Pyłek](/images/patterns/cards/flyweight-mini.png?id=422ca8d2f90614dce810a8812c626698)
Pozwala zmieścić większą liczbę obiektów w dostępnej pamięci RAM poprzez współdzielenie elementów opisujących stan obiektu. Część opisu stanu jest wspólna dla wielu obiektów, więc nie muszą one zawierać kopii wszystkich danych.
![Pełnomocnik](/images/patterns/cards/proxy-mini.png?id=25890b11e7dc5af29625ccd0678b63a8)
Pozwala tworzyć zastępcę dla innego obiektu. Pełnomocnik nadzoruje dostęp do pierwotnego obiektu, pozwalając na wykonanie jakiejś czynności przed lub po przekazaniu do niego żądania.