$KK(Schnittstellen) $KKK(Bedeutung von Schnittstellen) * Schnittstellen spezifizieren Objekte vollständig. * Änderungen innerhalb des Objekt, wirken sich nicht ausserhalb aus. * Änderungen an Schnittstellen betrifft alle Clienten * Schnittstellen legen fest welche Arbeit das Objekt bzw. die Clienten haben $KKK(Folgerungen) * Achte auf qualitative Schnittstellen * halte die Anzahl der möglichen Clienten klein (Schichtenmodell, Fassade) * veröffenliche Schnittstellen spät $KKK(Qualitätskriterien von Schnittstellen) * vollständig * schlank * einheitlich * dokumentiert $KKK(Adapter Pattern) Ein Adapter verbindet 2 Objekte, deren Schnittstellen nicht zusammenpassen. $B(Bilder,adapter.gif,Adapter Pattern) Ein Objektadapter verwendet eine Objektkomposition . Er besteht im Kern aus zwei Objekten: dem Adapterobjekt und dem adaptierten Objekt. Die Klasse Adapter erbt die geforderte Schnittstelle von der Klasse Ziel. Sie implementiert diese Schnittstelle mit Hilfe von AdaptierteKlasse. Klienten verwenden Adapter nur über eine abstrakte Zielklasse. Ruft ein Klient über Polymorphie eine Operationen des Adapterobjekts auf, dann ruft das Adapterobjekt die Operationen des adaptierten Objekts, welche die gewünschte Dienst-leistung liefern. Entwurfsmuster Adapter $KKK(Lange Parameterlisten) * Falls die Methode mehrere Dinge auf einmal macht, ersetze sie durch mehrere Methoden mit jeweils weniger Paramter. * Ueberpruefe ob ein Parameter durch eine Methode ersetzt werden kann. * Falls mehrere Parameter vom selben Objekt kommen, so übergebe anstelle der Parameter gleich das ganze Objekt. * Führe Paramterobjekt ein. $R(Literatur) [i|Refactoring>refactoring] Kapitel 10: Making Method Calls Simpler $R\