2022-04-15 16:07:48
Помнится, вот здесь мы говорили про порождающие паттерны проектирования.
Давайте продолжим наше хождение по шаблонам и рассмотрим следующую группу. Р.S. Если вообще не в теме, то советуем начать с этого поста.
А погуторим мы про структурные шаблоны проектирования, которые отвечают за построение удобных в поддержке иерархий классов.
Адаптер - позволяет объектам с несовместимыми интерфейсами работать вместе.
Плюс в том, что он отделяет и скрывает от клиента подробности преобразования различных интерфейсов.
Минус - усложняет код программы из-за введения дополнительных классов.
Мост - разделяет один или несколько классов на две отдельные иерархии.
Плюсы: позволяет строить платформо-независимые программы и скрывает лишние или опасные детали реализации от клиентского кода.
Минус все тот же - усложнение кода.
Компоновщик - группирует множество объектов в древовидную структуру, а затем работает с ней так, как будто это единичный объект.
Плюсы: упрощает архитектуру клиента и облегчает добавление новых видов компонентов.
Минус кроется в том, что компоновщик создает слишком общий дизайн классов.
Декоратор - позволяет динамически добавлять объектам новую функциональность, оборачивая их в полезные «обёртки».
Плюсы: позволяет добавлять обязанности в ленту и иметь несколько мелких объектов вместо одного объекта на все случаи жизни.
Но при этом многократно обернутые объекты трудно конфигурировать.
Фасад - предоставляет простой интерфейс к сложной системе классов, библиотеке или фреймворку.
Из положительного: изолирует клиентов от компонентов сложной подсистемы.
Из отрицательного: фасад рискует стать божественным объектом, привязанным ко всем классам программы.
Легковес - позволяет вместить бóльшее количество объектов в отведённую оперативную память.
Он ее экономит, разделяя общее состояние объектов между собой, вместо хранения одинаковых данных в каждом объекте.
Но при этом расходует процессорное время на поиск/вычисление контекста, а также усложняет код программы.
Заместитель - подставляет вместо реальных объектов специальные объекты-заменители.
Этот паттерн позволяет контролировать сервисный объект независимо для клиента и работать, если этот объект еще не создан.
Из грустного: усложняет код программы и увеличивает время отклика от сервиса.
814 views13:07