Interface-Assoziationen in Java?

2 Antworten

Mir geht es insbesondere um die Beziehung zwischen Ordering und IService.

Ordering bedient sich der Methode startService() aus dem Interface. Die Klasse Ordering hat also kein "implements" (wie Delivery oder Kitchen), sondern lediglich einen Member vom Typen des Interfaces und kann so auf die Methode zugreifen.

Vom schlechten Design sehe ich mal ab.... aber du hast völlig recht, da blickt man kaum durch.

Letztendlich brauchen auch Interfaces irgendeine Klasse, die sie implementieren.

Der Vorteil bei Interfaces ist, dass man dann die implementierende Klasse austauschen kann. Dies kann man bspw. auch zur Laufzeit machen. Man ist also nicht an eine zu implementierende Klasse gebunden.

Das Interface definiert nur wie die Klasse auszusehen hat, d.h. welche Methoden sie anbieten muss. Die implementierende Klasse hat dann diese Methoden auszuimplementieren.

Interfaces definieren Verträge oder Fähigkeiten, die Klassen implementieren können. Eine Assoziation zwischen Interfaces beschreibt eine abstrakte Beziehung zwischen diesen Fähigkeiten.

Assoziationen mit Interfaces ermöglichen polymorphes Verhalten. Eine Klasse kann verschiedene Implementierungen eines Interfaces verwenden, ohne den eigenen Code zu ändern.

Durch die Verwendung von Interfaces für Assoziationen wird der Code stärker entkoppelt. Dies fördert lose Kopplung und macht das System flexibler und leichter zu warten.

Interfaces erlauben es, Beziehungen auf einer höheren Abstraktionsebene zu definieren, ohne sich auf spezifische Implementierungen festzulegen.