Was sind Adapterklassen?
Implementiert eine Klasse ein Interface, so müssen dort alle Methoden des Interface konkretisiert werden. Java kennt eine ganze Reihe an Interfaces, die 3, 4, 5 oder sogar 7 Methoden deklarieren. Wird eines von ihnen implementiert, kann dies zu recht unübersichtlichem Code in der implementierenden Klasse führen, wenn nicht alle Methoden tatsächlich verwendet werden. Sie erscheinen dann als leere Deklarationen. Adapterklassen vermeiden dies, indem sie erlauben, nur die tatsächlich benötigten Methoden zu überschreiben.
Das Beispiel erläutert den Mechanismus anhand der Deklaration eines Beispiel-Interfaces und einer dazugehörigen Adapterklasse.
/* File MacherInterface.java */ public interface MacherInterface { public void machEtwas(); public void machWasAnderes(); } /* File MacherInterfaceImpl.java */ public class MacherInterfaceImpl implements MacherInterface { @Override public void machEtwas() { System.out.println("Mach was mit dem Interface"); } @Override public void machWasAnderes() { System.out.println("Mach was anderes mit dem Interface"); } public static void main(String[] args) { MacherInterfaceImpl mi = new MacherInterfaceImpl(); mi.machEtwas(); mi.machWasAnderes(); } }
Das Interface MacherInterface
deklariert zwei
einfache Methoden. Die Klasse MacherInterfaceImpl
implementiert das Interface, sodass beide Methoden
überschrieben werden müssen. Dies ist auch der Fall,
wenn nur eine der beiden Methoden benötigt wird.
public abstract class MacherAdapter implements MacherInterface { @Override public void machEtwas() {} @Override public void machWasAnderes() {} }
Verwendet man einen Adapter, so kann dieser statt der
Implementierung des Interfaces verwendet werden.
Die Klasse MacherAdapter
implementiert das Interface ebenfalls, ist jedoch abstract
deklariert. Die Körper der überschriebenen Methoden
sind leer, sodass diese überschrieben werden können.
public class AdapterBeispiel { public static void main(String[] args) { new MacherAdapter() { public void machEtwas() { System.out.println("Mach was mit dem Adapter"); } }.machEtwas(); } }
Siehe auch den Artikel zum Adapter-Design-Pattern zum gleichnamigen Thema.
Wenn Ihnen javabeginners.de gefällt, freue ich mich über eine Spende an diese gemeinnützigen Organisationen.