Иногда во время процесса разработки мы обнаружим, что интерфейсы, требуемые клиентом, и предоставленные интерфейсы несовместимы. Мы не можем изменить клиент -интерфейс по особым причинам. В этом случае нам нужно адаптироваться к существующим интерфейсам и несовместимым классам, которые требуют режима адаптера. С помощью адаптеров мы можем использовать их без изменения старого кода, который является способностью адаптера.
Режим адаптации может использоваться для адаптации между существующим интерфейсом и несовместимым классом. Объекты, использующие этот режим, также называются обертками, потому что они обертывают другой объект новым интерфейсом.
На поверхности режим адаптера очень похож на режим внешнего вида. Все они должны обернуть другие объекты и изменить интерфейсы, которые они отображают. Разница между ними заключается в том, как они меняют интерфейс. Элемент внешнего вида представляет упрощенный интерфейс, который не предоставляет дополнительных вариантов, и иногда он делает некоторые предположения для облегчения общих задач. Адаптер преобразует один интерфейс в другой, который не будет отфильтровать определенные возможности и не упростит интерфейс. Если API клиентской системы недоступен, требуется адаптер.
Основная теория
Режим адаптера: преобразовать интерфейс в интерфейс, требуемый клиентом, без изменения кода клиента, чтобы несовместимый код мог работать вместе.
Адаптер в основном состоит из 3 ролей:
(1) Клиент: класс, который вызывает интерфейс
(2) Адаптер: класс, используемый для подключения клиентского интерфейса и интерфейса, предоставляющих услуги
(3) Адаптер: предоставляет услуги, но несовместимо с требованиями клиентского интерфейса.
Реализация режима адаптера
1. Самый простой адаптер
Режим адаптера не такой сложный, как вы думаете, поэтому давайте приведем вам самый простой пример.
Клиент вызывает метод для расчета добавления:
var result = add (1,2);
Однако мы не предоставили метод добавления и предоставили метод SUM с той же аналогичной функцией:
Функция sum (v1, v2) {return v1 + v2;}Чтобы избежать изменения клиента и сервера, мы добавляем функцию обертки:
Функция add (v1, v2) {reutrn sum (v1, v2);}Это самый простой режим адаптера, мы добавляем метод обертки между двумя несовместимыми интерфейсами и используем этот метод, чтобы подключить их, чтобы они работали вместе.
2. Практическое применение
Благодаря разработке фронтальных рамок, все больше и больше разработчиков начали использовать структуру MVVM для разработки, необходимые только для манипулирования данными без элементов DOM, а jQuery оказывает все меньше и меньше эффекта. Многие проекты по -прежнему относятся к классу инструментов библиотеки JQUERY, потому что нам нужно использовать AJAX, предоставленный JQUERY для запроса данных на сервере. Если роль JQUERY в проекте используется только в качестве библиотеки инструментов AJAX, то кажется, что это немного похоже на убийство курицы и вызывает трату ресурсов. В настоящее время мы можем полностью инкапсулировать нашу собственную библиотеку Ajax.
Предположим, что AJAX, который мы инкапсулировали, используется через функцию:
ajax ({url: '/getData', type: 'post', dataType: 'json', data: {id: "123"}}). done (function () {})За исключением разницы между вызовом интерфейса Ajax и $ .ajax Jquery, другие точно такие же.
В проекте должно быть много мест, которые запрашивают Ajax. Когда мы заменяем jQuery, мы не можем изменить $ .ajax один за другим. Что мы должны делать? В настоящее время мы можем добавить адаптер:
var $ = {ajax: function (options) {return ajax (options); }}Это будет совместимо со старым кодом и новыми интерфейсами, избегая модификаций существующего кода.
Суммировать
Принцип режима адаптера очень прост, который состоит в том, чтобы добавить новый класс обертки, чтобы обернуть новый интерфейс, чтобы адаптироваться к вызовам старого кода, и избежать изменения интерфейса и вызова кода.
Применимые сценарии: Есть много кодовых вызовов старых интерфейсов. Чтобы избежать изменения старого кода и замены новых интерфейсов, сценарии приложения не влияют на существующие методы реализации.
1. Применимые случаи для режима адаптера:
Адаптеры подходят для ситуаций, когда интерфейсы, ожидаемые клиентской системой, несовместимы с таковыми, предоставленными существующим API. Два метода, адаптированные к адаптеру, должны выполнять аналогичные задачи, в противном случае проблема не будет решена. Точно так же, как элементы моста и элементы внешнего вида, создавая адаптеры, абстракция может быть изолирована от их реализаций, чтобы они могли быть изменены независимо.
2. Преимущества режима адаптера:
Оберните интерфейс существующего класса новым интерфейсом, чтобы клиентская программа могла использовать этот класс, который не предназначен для без серьезной операции.
3. Недостатки режима оркестратора:
Некоторые люди думают, что адаптеры - это ненужные накладные расходы, которых можно полностью избежать, переписывая существующий код. Кроме того, режим адаптера также представит партию новых инструментов, которые необходимо поддерживать. Если существующий API еще не сформирован, или новый интерфейс еще не сформирован, адаптер не всегда может работать.
Его преимущества, как правило, выделяются больше, чем его недостатки, когда они включают в себя большие системы и устаревшие рамки.