Was ist ein Adapter Pattern bzw. eine Adapter-Klasse?

Das Adapter Pattern gehört zu den Strukturmustern der Gang of Four. Es beschreibt eine Adapter-Klasse, die die Kooperation ansonsten inkompatibler Klassen und Interfaces ermöglicht. Dies geschieht in Java durch Erweiterung einer Klasse und/oder Implementieren eines Interfaces.

Das Beispiel ist bewusst sehr einfach gehalten. Ausgangspunkt für die Betrachtung ist die Klasse MacherClass, die lediglich eine Methode machEtwas() mit einer Ausgabe auf die Konsole enthält.

public class MacherClass {

    public void machEtwas() {
        System.out.println("Olle Kamellen!");
    }
}

Die Funktionalität, die übernommen werden soll, befindet sich in Form der Methode machAnderes() im Interface AdapterInterface.

public interface AdapterInterface {
    public void machAnderes();
}

Die eigentliche Adapter-Klasse AdapterImpl implementiert dieses Interface und erweitert die Klasse MacherClass. In der Konkretion der Interface-Methode machAnderes() findet der Aufruf von MacherClass#machEtwas() statt und kann diese so mit neuen Funktionalitäten kombinieren.

public class AdapterImpl extends MacherClass implements AdapterInterface {

    @Override
    public void machAnderes() {
        System.out.println("Mach etwas:");
        machEtwas();
    }
}

Der Aufruf von AdapterImpl#machAnderes() zeigt dies anhand der Ausgabe auf der Konsole.

public class AdapterBeispiel {

    public static void main(String[] args) {
       new AdapterImpl().machAnderes(); // Mach etwas: Olle Kamellen!
    }
}