Режим адаптера Java
Недавно я изучал основы Java и испытываю много сомнений, когда я изучал адаптеры. Я искал информацию в Интернете и нашел много информации об адаптере, но эта статья хороша. Вот запись, вы можете прочитать то, что вам нужно.
Адаптерный шаблон состоит в том, чтобы преобразовать интерфейс одного класса в другой интерфейс, который ожидает клиент, чтобы два класса, оригинальные интерфейсы, не совпадают и не могут работать вместе, могут работать вместе. Функционально говоря, классы, которые несовместимы с этими интерфейсами, обычно имеют одинаковые или похожие функции. Обычно мы решаем такого рода несовместимость интерфейса, изменяя интерфейс этого класса, но если мы не желаем изменять исходный интерфейс для приложения, или у нас нет исходного кода объекта вообще, режим адаптера пригодится.
Преимущества адаптера:
1. Разделяйте целевой класс и класс адаптера
2. Увеличьте прозрачность и повторное использование класса, инкапсулируйте конкретную реализацию в классе адаптера, которая прозрачна для класса клиента и улучшает возможность повторного использования адаптера.
3. И гибкость, и расширение очень хороши, и они соответствуют принципу открытия и закрытия
Роли, связанные с адаптером, включают следующее:
Цель: определяет конкретный интерфейс, используемый клиентом.
Клиент: используйте целевой интерфейс, чтобы сотрудничать с объектами в соответствии с целевым интерфейсом.
Адаптируется: существующий интерфейс, который необходимо адаптировать.
Адаптер: Отвечает за преобразование интерфейса адаптации в интерфейс Target. Адаптеры - это конкретный класс, который является ядром этого шаблона.
Адаптеры разделены на два типа: адаптер класса и адаптер объекта, которые будут подробно описаны ниже.
Класс адаптер
Так называемый адаптер класса относится к адаптеру адаптера, унаследовавшему нашу адаптер и реализацию целевого целевого интерфейса. Поскольку это единственное наследство в Java, этот адаптер может служить только унаследованной адаптеру адаптеру. Код заключается в следующем:
Адаптируемый
пакет com.bluemsun.classAdapter; public Class Person {private Int Id; Приватное название строки; / *** Человек может говорить только по -английски сейчас*/ public void showerenglish () {System.out.println («Человек может сказать по -английски!»); } /*** Опустить сеттер, getter. */}Целевой интерфейс (цель)
Пакет com.bluemsun.classAdapter;/*** Цель требует, чтобы человек мог говорить по -английски, французски и японски. Но теперь человек может говорить только по -английски * @author Administrator * *//public interface target_person {void showerenglish (); void showerfrench (); void spayjapanese ();}Адаптер
пакет com.bluemsun.classAdapter;/*** Адаптер класса, потому что он наследует человека, а Java может наследовать только в одиночном, поэтому этот адаптер служит только классу человека* Этот адаптер позволяет классу человека реализовать методы, указанные целевым интерфейсом, не изменяя исходный код. showerfrench () {System.out.println («Человек может сказать французский!»); } @Override public void Speakjapanese () {System.out.println («Человек может сказать японский!»); }}Клиент
пакет com.bluemsun.classadapter; public class test {public static void main (string [] args) {target_person person = new adapter_person (); Person.sayenglish (); Person.sayfrench (); Человек.sayjapanese (); }}Вышеуказанные несколько простых кодов демонстрируют роль адаптеров классов. Как мы уже говорили в начале, этот адаптер может служить только занятиям человека. В настоящее время вы можете задаться вопросом, нужно ли мне адаптироваться ко многим классам, нужно ли мне написать адаптер для каждого класса, к которому нужно адаптироваться? Есть ли более гибкий способ? Ответ: Да! Это адаптер объекта, о котором мы говорим ниже.
Адаптер объекта
Проще говоря, так называемый адаптер объекта означает, что адаптер реализует наш целевой интерфейс, но не наследует классы, которые необходимо адаптировать. Вместо этого он адаптирован путем прохождения конструктора адаптера. Код выглядит следующим образом: (цель, адаптируется так же, как и выше)
Адаптер
пакет com.bluemsun.objectdapter; import com.bluemsun.classAdapter.person; import com.bluemsun.classAdapter.target_person;/** * Адаптер объекта, в отличие от адаптеров класса, адаптер объекта может адаптироваться к целевому администратору. человек; // Передача адаптируемому классу человека в конструкторе Public Adapter_person (Person Person) {this.person = person; } // Реализовать sayenglish () в целевом интерфейсе-Call sayenglish () в Adaptee @Override public void sayenglish () {this.person.sayenglish (); } // реализовать другие методы в интерфейсе @Override public void sayfrench () {System.out.println ("человек может сказать французский!"); } @Override public void Speakjapanese () {System.out.println («Человек может сказать японский!»); }}Клиент
пакет com.bluemsun.objectdapter; import com.bluemsun.classAdapter.person; import com.bluemsun.classAdapter.target_person; Общедоступный тест класса {public static void main (string [] args) {target_person person = new Adapter_person (New Person ()); Person.sayenglish (); Person.sayfrench (); Человек.sayjapanese (); }}Адаптеры объектов могут адаптироваться к нескольким классам с адаптацией. Просто проходите разные классы с адаптацией в конструкторе адаптера. Гибкость.
Преимущества классовых адаптеров:
1. Поскольку класс адаптера является подклассом класса адаптера, некоторые методы адаптера могут быть заменены в классе адаптера, что делает адаптер более гибким.
Недостатки классовых адаптеров:
1. Для таких языков, как Java и C#, которые не поддерживают множественное наследство, не более одного класса адаптера может быть адаптирован как минимум к одному классу адаптера за раз, а целевой абстрактный класс может быть только интерфейсом, а не классом. Его использование имеет определенные ограничения. Он не может быть адаптирован к классу адаптера и его подклассу к целевому интерфейсу одновременно.
Преимущества адаптеров объектов:
1. Адаптировать несколько разных адаптеров к одной и той же цели, то есть один и тот же адаптер может адаптировать как класс адаптера, так и его подкласс к целевому интерфейсу.
Недостатки адаптеров объектов:
1. По сравнению с режимом адаптера класса, нелегко заменить класс адаптера.
Спасибо за чтение, я надеюсь, что это поможет вам. Спасибо за поддержку этого сайта!