Co to jest klasa adaptera w Javie? Zalety klasy adapterów i jej typów

Opublikowany: 2021-05-19

Spis treści

Co to jest klasa adaptera?

W JAVA klasa adaptera umożliwia domyślną implementację interfejsów nasłuchujących. Pojęcie interfejsów odbiornika pochodzi z modelu zdarzeń delegowania. Jest to jedna z wielu technik używanych do obsługi zdarzeń w językach programowania graficznego interfejsu użytkownika (GUI), takich jak JAVA.

Programowanie GUI jest głównie sterowane zdarzeniami, a użytkownik wchodzi w interakcję z systemem za pomocą powiązanych elementów wizualnych i graficznych. Oznacza to, że każda czynność zainicjowana przez użytkownika, taka jak ruch myszką zmieniający współrzędne wskaźnika myszy na ekranie, kliknięcie przycisku lub przewinięcie strony, jest uważana za niezależne zdarzenie.

Każde z tych niezależnych działań związanych ze zdarzeniami jest nierozerwalnie powiązane z segmentem kodu, który iteruje, jaką odpowiedź aplikacja powinna dostarczyć użytkownikowi. Droga jest prosta. Użytkownik (źródło) generuje zdarzenie i wysyła je do co najmniej jednego interfejsu nasłuchiwania. Po odebraniu potencjalnego zdarzenia interfejs nasłuchiwania przetwarza zdarzenie i zwraca odpowiednią odpowiedź.

Ta ścieżka uzasadnia proces obsługi zdarzeń. Klasa adaptera w JAVA jest zatem używana do implementacji interfejsu posiadającego zestaw fikcyjnych metod. Jeśli programista zdecyduje się odziedziczyć klasę adaptera, nie będzie zmuszony do zaimplementowania wszystkich metod wymienionych w określonym interfejsie odbiornika. Klasę adaptera można dodatkowo podzielić na podklasy, aby programista mógł przesłonić tylko wymagane metody. Innymi słowy, używając klasy adaptera, programista może szybko skonstruować własny interfejs nasłuchiwania do zdarzeń pola. Pomaga to zaoszczędzić kod.

Jaka jest relacja między klasą adaptera a interfejsem odbiornika?

Odbiorniki są używane, gdy programista zamierza wykorzystać większość metod wymienionych w interfejsie. Jeśli interfejs odbiornika jest zaimplementowany bezpośrednio przez klasę, wszystkie metody w tym interfejsie muszą zostać zaimplementowane, co powoduje, że kod jest nierozsądnie duży. Tę złożoność można rozwiązać, wywołując klasę adaptera. Klasa adaptera okazuje się niezbędna w przypadkach, w których zdarzenie wywołuje tylko określone metody.

Programista musi tylko utworzyć jego podklasę i przesłonić metody zainteresowania, aby użyć klasy adaptera. Klasy adapterów są zatem korzystne dla interfejsów nasłuchiwania w JAVA, które mają więcej niż jedną metodę. Aby lepiej to zrozumieć, rozważmy przykład interfejsu MouseListener. Ten interfejs jest powiadamiany o każdej zmianie stanu myszy. Ma pięć metod: kliknięcie myszą, mouseExited, mouseEntered, mousePressed i mouseReleased.

W przypadku powiadomienia o zdarzeniu, nawet jeśli tylko z tych metod jest konieczna, wszystkie z nich muszą zostać zaimplementowane. Metody, które nie są potrzebne, pozostają puste. Klasa adaptera służy do uniknięcia tej niepotrzebnej implementacji pustej treści metody.

Zrozumienie wzorca projektowego adaptera

W języku nietechnicznym adapter z definicji jest zaprojektowany tak, aby umożliwić współpracę dwóch niekompatybilnych interfejsów. Wzorzec adaptera jest zatem w stanie uczynić dwa niekompatybilne interfejsy kompatybilnymi bez zmiany ich istniejącego kodu. Odpowiednie interfejsy mogą być niespójne, ale ich wewnętrzne funkcjonalności powinny odpowiadać poszukiwanym wymaganiom. Aby lepiej to wyjaśnić, rozważmy odpowiedni przykład.

Zdajemy sobie sprawę, że różne kraje mają różne gniazdka elektryczne, napięcia i pomiary częstotliwości. Jeśli musimy skorzystać z urządzenia zaprojektowanego zgodnie ze specyfikacją jednego kraju w innym, musimy upewnić się, że urządzenie jest kompatybilne.

Na przykład w Wielkiej Brytanii powszechnie stosowane są gniazda typu G, w USA i Japonii gniazda typu A i typu B, a w Indiach typu C, typu D i typu M. Laptop lub urządzenie mobilne przywiezione z Indii w związku z tym być niezgodne ze specyfikacjami elektrycznymi, powiedzmy, USA i Japonii. W tym przypadku cel adaptera staje się niezbędny do konwersji niezgodnego kodu na zgodny kod.

Rodzaje klas adapterów

Klasy adapterów można znaleźć w java. awt.the event, java.awt.dnd i java.swing.event. Standardowe klasy adapterów z odpowiadającymi im interfejsami nasłuchiwania w JAVA są wymienione poniżej dla każdego z tych pakietów.

1. java. awt. przeddzień

Klasa adaptera Interfejs słuchacza
OknoAdapter WindowListener
KluczAdapter KeyListener
Adapter myszy Odbiornik myszy
Adapter ruchu myszy Odbiornik ruchu myszy
Adapter ostrości FocusListener
Adapter komponentów Odbiornik komponentów
KontenerAdapter Odbiornik kontenera
HierarchiaBoundsAdapter HierarchiaBoundsListener

2. java.awt.dnd

Klasa adaptera Interfejs słuchacza
Adapter DragSource DragSourceListener
PrzeciągnijTargetAdapter DragTargetListener

3. javax.swing.event

Klasa adaptera Interfejs słuchacza
Adapter wejściowy myszy MouseInputListener
Wewnętrzny adapter ramy Odbiornik ramek wewnętrznych

Są one obecne w zestawie narzędzi Abstract Window Toolkit odpowiednich pakietów Java. Aby zrozumieć naturę metod zawartych w interfejsach słuchacza, rozważmy kilka przykładów:

  1. Interfejs WindowListener definiuje metody związane ze zdarzeniami okna, w tym otwieraniem i zamykaniem okna, aktywacją i dezaktywacją okna oraz ikonizacją i detoksykacją okna.
  2. Interfejs KeyListener definiuje metody, które obsługują kluczowe zdarzenia, które są wyzwalane przez użytkownika wchodzącego w interakcję ze składnikami klawiatury.
  3. Interfejs MouseListener jest powiadamiany, gdy mysz jest stabilna i odbiera potencjalne zdarzenia związane z wychodzeniem, wchodzeniem, klikaniem, naciskaniem lub zwalnianiem składnika w ramce wizualnej użytkownika.
  4. Interfejs komponentu nasłuchiwania odbiera potencjały zdarzeń komponentu. W tym przypadku komponent odnosi się do dowolnego obiektu graficznego zaprojektowanego do interakcji z użytkownikiem, takiego jak przyciski, pola wyboru i paski przewijania.

Różnica między adapterem klasy a adapterem obiektów

Aby zagwarantować funkcjonalność i elastyczność, programowanie obiektowe, takie jak JAVA, oferuje programistom takie funkcje, jak dziedziczenie i kompozycja. Jeśli spróbujesz ponownie użyć określonego kodu, dziedzicząc jego cechy z innej klasy, utworzona podklasa pozostanie zależna od klasy nadrzędnej przez cały czas trwania programu.

To sprawia, że ​​w wielu przypadkach system staje się coraz bardziej złożony i mniej testowalny, a wymiana funkcjonalności w czasie wykonywania jest niezwykle trudna. W kompozycji jedna klasa używa tylko innej. Oddzielenie między nimi jest dodatkowo wspierane poprzez jasne zdefiniowanie interfejsów.

Spór między adapterem klasy a adapterem obiektu można zatem rozwiązać w następujący sposób. Adapter klas korzysta z dziedziczenia i dlatego może owijać tylko klasę. Nie może zawijać interfejsu, ponieważ z definicji musi pochodzić z jakiejś klasy bazowej. Adapter obiektów używa kompozycji i dlatego może owijać zarówno klasy, jak i interfejsy. Osiąga się to przede wszystkim dlatego, że w kompozycji każda klasa lub interfejs jest prywatnym, hermetyzowanym członkiem.

Zalety klasy adaptera

  1. Klasa adaptera pomaga niepowiązanym klasom we wspólnej pracy.
  2. Dzięki zastosowaniu klasy adaptera ta sama klasa może być używana na wiele sposobów.
  3. Użytkownicy mają do dyspozycji opcję podłączanego zestawu do tworzenia aplikacji. W związku z tym użycie klasy staje się wysoce wielokrotnego użytku.
  4. Zwiększa przejrzystość zajęć.
  5. Zapewnia sposób na uwzględnienie powiązanych wzorców w klasie.

Ucz się kursów inżynierii oprogramowania online z najlepszych światowych uniwersytetów. Zdobywaj programy Executive PG, Advanced Certificate Programs lub Masters Programs, aby przyspieszyć swoją karierę.

Wniosek

W tym artykule zrozumieliśmy mechanikę klasy adapterów w języku JAVA, trzy główne pakiety zawierające klasy adapterów oraz korzyści, jakie klasy adapterów przynoszą programistom. Klasy adaptera są klasami abstrakcyjnymi do odbierania różnych zdarzeń i istnieją jako udogodnienie przy tworzeniu obiektów nasłuchiwania. Dzięki różnym funkcjom klasy adapterów oferują programistom innowacyjną platformę dzięki metodologii Swing.

Jeśli chcesz poprawić swoje umiejętności w języku Java, musisz zdobyć te projekty Java. Jeśli chcesz dowiedzieć się więcej o Java, programowaniu pełnego stosu, zapoznaj się z programem Executive PG UpGrad i IIIT-B w zakresie programowania pełnego stosu, który jest przeznaczony dla pracujących profesjonalistów i oferuje ponad 500 godzin rygorystycznego szkolenia, 9+ projekty i zadania, status absolwentów IIIT-B, praktyczne praktyczne projekty zwieńczenia i pomoc w pracy z najlepszymi firmami.

Co to jest klasa adaptera w Javie?

Klasa adaptera to klasa zdefiniowana przy użyciu wzorca adaptera. Adapter może służyć do dodawania nowych możliwości do istniejącej klasy bez modyfikowania oryginalnej klasy. Na przykład klasa java.util.Scanner pochodzi z pakietu java.util. Klasa Scanner nie może czytać z pliku, ponieważ plik nie jest InputStream. Aby odczytać z pliku, tworzymy klasę adaptera, która akceptuje InputStream jako argument i zwraca przetworzone dane jako obiekt. Wzorzec adaptera służy do rozszerzenia funkcjonalności istniejącej klasy bez jakiejkolwiek modyfikacji jej kodu.

Czym są wzorce projektowe w Javie?

Wzorzec projektowy to ogólne, wielokrotnego użytku rozwiązanie często występującego problemu w danym kontekście w projektowaniu oprogramowania. Nie jest to gotowy projekt, który można bezpośrednio przekształcić w kod. Jest to opis lub szablon rozwiązania problemu, który można wykorzystać w wielu różnych sytuacjach. W programowaniu obiektowym wzorce projektowe są ustalonymi konwencjami, które ułatwiają projektowanie i wdrażanie systemów oprogramowania. W Javie istnieje kilka wzorców projektowych. Nie jest konieczne, aby wzorzec projektowy był pobierany z innego języka. Wzorce projektowe można pisać w bardzo prostej i krótkiej formie.

Jaki jest najczęściej używany wzorzec projektowy w Javie?

W javie znajdziesz wiele wzorców projektowych. Najczęściej używanym wzorcem projektowym jest wzorzec fabryczny. Ma wiele zastosowań w rozwoju przedsiębiorstw. Pomaga w usuwaniu zależności od konkretnych klas w aplikacji. Podamy Ci przykład z życia wzięty. W aplikacji e-commerce może być wymagane utworzenie obiektu użytkownika zarówno w środowisku testowym, jak i produkcyjnym. Klasa użytkownika może mieć wiele podklas, takich jak Admin, Shopkeeper, Seller, User itp. Wspólna główna metoda we wzorcu fabryki wygląda następująco: public class UserFactory { public static Object create () { User user = createAdmin (); // zobacz czy administrator ma uprawnienia return user ; // zwróć bieżącego użytkownika } }. Zobacz tutaj, jak klasa użytkownika nie jest zależna od konkretnej klasy. Chociaż nie jest to kompletny przykład, pokazuje, jak działa wzorzec Factory.