Kategorie szkoleń | Egzaminy | Kontakt

Odpowiedź (1)

  • 0

Klasy adapterowe implementują określony interfejs, dostarczając domyślnych (najczęściej trywialnych/pustych) implementacji metod.
Weźmy konkretny przykład: Projektujemy interfejs graficzny aplikacji i chcemy oprogramować standardowy przycisk zamykania okna (krzyżyk w prawym górnym narożniku). Mamy wtedy dwa wyjścia.

Pierwsze - implementacja interfejsu WindowAdapter, ale wtedy musimy dostarczyć implementacji wszystkich siedmiu metod interfejsu (mimo, że jesteśmy zainteresowani tylko jedną - windowClosing). Musimy dostarczyć jakichkolwiek (np. pustych) implementacji pozostałych metod, co czyni kod mało czytelnym, a dodatkowo rozwlekłym.

Innym rozwiązaniem jest użycie klasy adapterowej - w naszym przykładzie klasy WindowAdapter. Klasa implementuje już interfejs WindowListener, więc wystarczy po niej dziedziczyć, nadpisując wybraną metodę. Kod jest bardziej zwarty i przejrzysty. To rozwiązanie też nie jest pozbawione wad. Ponieważ dziedziczymy już po klasie, to znaczy, że nasza klasa nie może już rozszerzać innych klas (w Javie mamy dziedziczenie jednobazowe).

Notabene sytuacja zmieni się zapewne w Javie SE8, gdzie jest planowane wprowadzenie możliwości dostarczania domyślnych implementacji metod wewnątrz interfejsów.

  • Odpowiedział
  • @ | 25.06.2013
  • TRENER MODERATOR ALTKOM AKADEMII