Определение режима адаптера: используйте два несовместимых класса вместе, что принадлежит структурному режиму и требует двух идентификаторов: адаптируемый (адаптер) и адаптер (адаптер).
Зачем использовать режим адаптера
Мы часто сталкиваемся с двумя неродственными классами, которые необходимо объединить вместе. что делать?
Используя адаптер, создайте гибридный интерфейс (гибридный) между этими двумя интерфейсами.
Как использовать режим адаптера
Чтобы реализовать метод адаптера, он был упомянут в разделе «Регенерация класса» «Think in Java», есть два способа: композиция и наследство.
Предположим, что мы хотим водить груды, есть два типа: квадратные кучи и круговые кучи.
Кода -копия выглядит следующим образом:
открытый класс Squarepeg {
public void insert (String str) {
System.out.println ("squarepeg insert ():"+str);
}
}
открытый класс Roundpeg {
public void insertintohole (String msg) {
System.out.println ("Roundpeg insertintohole ():"+msg);
}
}
Сейчас есть приложение, которое требует как квадратных свай, так и круговых свай. Затем нам нужно всесторонне применить эти два не связанных с ним класса.
Кода -копия выглядит следующим образом:
pegadapter percead class расширяет Squarepeg {
частный раундпед;
Public Pegadapter (Roundpeg PEG) (this.Roundpeg = peg;)
public void insert (String str) {Roundpeg.insertIntOhole (str);}
}
В приведенном выше коде Раундпед принадлежит адаптируемому и является адаптером. Pegadapter - это адаптер, адаптирующий адаптируемый (адаптер Roundpeg) и Target (Target Squarepeg). Фактически, это всеобъемлющее применение методов композиции и наследства.
Пегадаптер сначала наследует SquarePeg, затем использует комбинацию нового для генерации метода объекта, генерирует объект Roundpeg Roundpeg, а затем перегружает метод Parent Class insert (). Отсюда вы также понимаете разницу между использованием новых для генерации объектов и использованием наследования Extens для генерации объектов.
Если у вас есть некоторый опыт использования Java, вы обнаружили, что этот шаблон часто используется.
Дальнейшее использование
Пегадаптер выше наследует квадратный серпг.
Кода -копия выглядит следующим образом:
открытый интерфейс iroundpeg {
public void insertintohole (String MSG);
}
публичный интерфейс isquarepeg {
public void вставка (String Str);
}
Ниже приведены новые раундпеды и квадрат.
Кода -копия выглядит следующим образом:
открытый класс Squarepeg реализует Isquarepeg {
public void insert (String str) {
System.out.println ("squarepeg insert ():"+str);
}
}
Общественный класс Roundpeg реализует iroundpeg {
public void insertintohole (String msg) {
System.out.println ("Roundpeg insertintohole ():"+msg);
}
}
Вот новый пегадаптер, называемый двусторонним адаптером:
Кода -копия выглядит следующим образом:
PEGADAPTER PEGADAPTER PEGADAPT
Частный раундпег Roundpeg;
частный квадратный квадратный квадрат;
// построить метод
public Pegadapter (Roundpeg peg) {this.roundpeg = peg;}
// построить метод
Public Pegadapter (Squarepeg Peg) (this.squarepeg = peg;)
public void insert (String str) {Roundpeg.insertIntOhole (str);}
}
Существует также тип, называемый подключаемыми адаптерами, который может динамически получить один из нескольких адаптеров. Используя технологию отражения, вы можете динамически обнаружить публичные методы в классах.