Bei der Deklaration von Parametern und Instanzvariablen haben wir die Wahl zwischen einer Schnittstelle und einer Klasse. Das Prinzip der minimalen Annahme legt zwei Regeln fest:
Wir verwenden nur dann eine implementierende Klasse, wenn die zugrunde liegende Schnittstelle nicht ausreicht. Dies sollte nur ganz selten der Fall sein.
Wir wählen unter all den passenden Schnittstellen die einfachste (in Java z.B.
Collection statt
List,
Iterator statt
ListIterator, sofern die Methoden der einfacheren Schnittstelle genügen).
Für Instanzvariablen und Parameter gilt somit gleichermassen: Der gewählte Typ ist so allgemein wie möglich und so speziell wie nötig.
Die Einhaltung dieses Prinzips, das letztlich eine Konkretisierung des Grundsatzes
Design to interfaces and not to classes ist, hilft uns bei der Entkopplung zwischen Client und Server und schafft so gezielt Plugin-Punkte, mit deren Hilfe die konkreten Implementierungen einfach, z.B. für das systematische Testen, ausgetauscht werden können.
Vergleiche hierzu auch:
Schnittstellen versus Klassen.
(Quelle: Johannes Siedersleben; Moderne Softwarearchitektur; dpunkt.verlag; 2004)