Адаптер
Adapter
Назначение
Паттерн адаптер (Adapter) преобразует интерфейс одного класса в интерфейс другого, который ожидают клиенты. Адаптер обеспечивает совместную работу классов с несовместимыми интерфейсами, которая без него была бы невозможна.
Решаемые задачи
Разделение ответственностей
Согласно принципу единственной ответственности (Single Responsibility) один класс должен иметь одну область ответственности. Когда существует сущность на которую возложены 2 или более ответственностей, они разделяются посредством вынесения каждой в адаптер. Ответственности делаются независимыми друг от друга.
Подмена одного интерфейса на другой
Позволяет преобразовывать интерфейс одного класса в интерфейс другого, который ожидают клиенты.
Использование сторонних библиотек
Использовать класс из нестандартной библиотеки следует через адаптер. Делается это для решения проблем совместимости интерфейсов библиотеки и рабочей среды, адаптации кода к новым версиям библиотеки, устранения сильной зависимости кода от библиотеки. Возможность контролировать и модифицировать адаптер делает код более гибким и легким в сопровождении.
Расширение базового интерфейса
UML диаграмма
Преимущества
отделяет и скрывает от клиента подробности преобразования различных интерфейсов
позволяет адаптировать интерфейс к требуемому
позволяет разделить роли сущности
дает возможность независимо развивать различные ответственности сущности
расширение интерфейса
Недостатки
необходимость плодить много классов приводит к увеличению количества времени и памяти,необходимых для исполнения программы
дублирование кода (в различных конкретных адаптерах может требоваться одна и та же реализация методов)
часто адаптер должен иметь доступ к реализации класса
Связь с другими паттернами
Last updated
Was this helpful?