Der Martin: Software-Architekturen: Adapter vs. Interface

Beitrag lesen

Hi,

Zwei dieser Ausschnitte sind Adapter und Interfaces.
Worin liegen die Unterschiede?

der Begriff "Adapter" ist mir im Zusammenhang mit Software noch nicht begegnet, Interface dagegen schon. Nein, das soll jetzt nicht der entscheidende Unterschied sein - es heißt nur, dass ich den Unterschied etwas abstrakter erklären muss. ;-)

Welche Eigenschaften sollte ein Stück Code haben, dass ich es als das eine oder als das andere identifizieren kann?
Mag mir jemand hierzu ein paar Denkanstöße geben?

Ein Interface ist eine Schnittstelle mit klar definierten Spezifikationen, sei es Hardware oder Software. Ein Interface ist zum Beispiel die Menge aller von außen aufrufbaren, dokumentierten Funktionen/Methoden eines Softwaremoduls/einer Klasse, einschließlich der an dieser Schnittstelle verwendeten Datentypen (manchmal auch API genannt).

Ein Adapter ist dagegen etwas, das zwischen zwei unterschiedlichen Interfaces mit ähnlichem Funktionsumfang vermittelt. In der Hardware kennen wir Adapter z.B. als passives Zwischenstück von einem Stecker-Standard auf einen anderen, oder als aktives Zwischenstück, etwa als Umsetzer zwischen RS232 und USB.
In der Software stelle ich mir unter einem Adapter etwas vor, das zwischen zwei Software-Interfaces oder Datenformaten vermittelt. Das kann im einfachsten Fall ein Programm sein, das Dateien von einem Format ins andere konvertiert, aber auch ein Plugin für einen Player, das etwa ankommende Videodaten in einem fremden Format in Echtzeit in MPEG2 umcodiert, so dass dieser Player sie abspielen kann (sehr konstruiertes Beispiel).

So long,
 Martin

--
Nicht jeder, der aus dem Rahmen fällt, war vorher im Bilde.