Структурные паттерны проектирования
Список структурных паттернов проектирования, которые отвечают за построение удобных в поддержке иерархий классов.
![Адаптер](/images/patterns/cards/adapter-mini.png?id=b2ee4f681fb589be5a0685b94692aebb)
Позволяет объектам с несовместимыми интерфейсами работать вместе.
![Мост](/images/patterns/cards/bridge-mini.png?id=b389101d8ee8e23ffa1b534c704d0774)
Разделяет один или несколько классов на две отдельные иерархии — абстракцию и реализацию, позволяя изменять их независимо друг от друга.
![Компоновщик](/images/patterns/cards/composite-mini.png?id=a369d98d18b417f255d04568fd0131b8)
Позволяет сгруппировать множество объектов в древовидную структуру, а затем работать с ней так, как будто это единичный объект.
![Декоратор](/images/patterns/cards/decorator-mini.png?id=d30458908e315af195cb183bc52dbef9)
Позволяет динамически добавлять объектам новую функциональность, оборачивая их в полезные «обёртки».
![Фасад](/images/patterns/cards/facade-mini.png?id=71ad6fa98b168c11cb3a1a9517dedf78)
Предоставляет простой интерфейс к сложной системе классов, библиотеке или фреймворку.
![Легковес](/images/patterns/cards/flyweight-mini.png?id=422ca8d2f90614dce810a8812c626698)
Позволяет вместить бóльшее количество объектов в отведённую оперативную память. Легковес экономит память, разделяя общее состояние объектов между собой, вместо хранения одинаковых данных в каждом объекте.
![Заместитель](/images/patterns/cards/proxy-mini.png?id=25890b11e7dc5af29625ccd0678b63a8)
Позволяет подставлять вместо реальных объектов специальные объекты-заменители. Эти объекты перехватывают вызовы к оригинальному объекту, позволяя сделать что-то до или после передачи вызова оригиналу.