ES6 реализация режима адаптера Адаптер

внешний интерфейс ECMAScript 6

Обзор

Роль шаблона адаптера заключается в решении проблемы несовместимости интерфейса между двумя объектами. С шаблоном адаптера два объекта, которые в противном случае не работали бы из-за несовместимых интерфейсов, могут работать вместе.

Приведу пример из жизни: преобразователи вилок гонконгского типа, электрические вилки гонконгского типа больше, чем электрические вилки на материке. Если мы купим книгу Mac из Гонконга, мы обнаружим, что зарядное устройство нельзя включить в розетку дома, а модифицировать розетку дома явно неудобно, поэтому нам нужна вилка-переходник.

использовать

Из приведенного выше примера мы можем узнать, что шаблон адаптера имеет три роли:

  • Целевой персонаж (Target): Электрическая вилка континента.
  • Роль источника (адаптируемый): электрическая вилка в гонконгском стиле.
  • Роль адаптера (адаптер): Преобразуйте электрические вилки гонконгского типа в электрические вилки меньшего размера для материкового Китая, чтобы адаптировать их к розеткам на материке.
выполнение целевой роли
class Target {
    small(){
        throw new Error('This method must be overwritten!');
    }
}

Целевую роль выполняет интерфейс Target, и пользователи ожидают электрические вилки меньшего размера.

реализация исходной роли
class Adaptee {
    big(){
        console.log("港式的电器插头可用咯~~");
    }
}

Adaptee представляет собой большую электрическую вилку в гонконгском стиле, чего пользователи не ожидают. Следовательно, здесь необходимо ввести адаптер, чтобы преобразовать его в целевой интерфейс, ожидаемый пользователем.

Реализация адаптера
class Adapter extends Target {
    constructor(adaptee) {
        super();
        this.adaptee = adaptee;
    }
    small() {
        this.adaptee.big();
    }
}

Класс Adapter наследует Target, переписывает функцию small и, наконец, преобразует big в гонконгском стиле в small с помощью адаптера.

пройти тест
let adaptee=new Adaptee();
let adapter=new Adapter(adaptee);
adapter.small();
# 港式的电器插头可用咯~~

[Первая реклама: все шаблоны дизайна см.22 наиболее практичных шаблона проектирования для реализации ES6