Abstrakte Typen und Schnittstellen
Aktualisiert: November 2007
Sowohl abstrakte Typen als auch Schnittstellen sind Mechanismen, um programmgesteuerte Abstraktionen anzugeben. Mit einer Abstraktion wird ein Vertrag angegeben, den Erben oder Implementierer einhalten müssen. Mit abstrakten Typen können Implementierungsdetails bereitgestellt werden. Schnittstellen können keine Implementierungsdetails bereitstellen.
Stellen Sie Abstraktionen nur bereit, wenn sie durch das Entwickeln mehrerer konkreter Implementierungen und APIs, die Abstraktionen nutzen, getestet wurden.
Wenn Sie Abstraktionen veröffentlichen, ohne sie unter realen Bedingungen zu testen, bleiben mit hoher Wahrscheinlichkeit Entwurfsprobleme unbemerkt, die nur schwierig oder überhaupt nicht ohne Kompatibilitätsprobleme in zukünftigen Versionen behoben werden können.
Treffen Sie beim Entwerfen einer Abstraktion die Wahl zwischen einer abstrakten Klasse und einer abstrakten Schnittstelle mit Bedacht.
Ausführliche Informationen über die Wahl zwischen einem abstrakten Typ und einer abstrakten Schnittstelle finden Sie unter Auswählen zwischen Klassen und Schnittstellen.
Stellen Sie Referenztests für konkrete Implementierungen von Abstraktionen bereit. Anhand solcher Tests sollten die Benutzer überprüfen können, ob ihre Implementierungen den Vertrag ordnungsgemäß implementieren.
Mit Referenztests können Sie überprüfen, ob Sie eine Schnittstelle ordnungsgemäß implementiert haben. Beispielsweise kann mit einem Test auf ICollection<T> überprüft werden, ob nach dem zweimaligen Aufruf der Add-Methode für eine Instanz, die die Schnittstelle implementiert, die Count-Eigenschaft um zwei erhöht wird.
Copyright für einzelne Teile 2005 Microsoft Corporation. Alle Rechte vorbehalten.
Copyright für einzelne Teile Addison-Wesley Corporation. Alle Rechte vorbehalten.
Weitere Informationen zu Entwurfsrichtlinien finden Sie im Buch "Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries" von Krzysztof Cwalina und Brad Abrams, veröffentlicht von Addison-Wesley, 2005.