Einschränken der Erweiterbarkeit durch Versiegeln von Klassen
Aktualisiert: November 2007
Mithilfe von Versiegelung können Sie die Verfahren einschränken, die Entwicklern das Erweitern des Frameworks ermöglichen. Wenn Sie eine Klasse versiegeln, können andere Klassen nicht von ihr erben. Wenn Sie einen Member versiegeln, können abgeleitete Klassen die Implementierung des Members nicht überschreiben. Versiegeln Sie Typen und Member nicht standardmäßig. Durch die Versiegelung wird die Anpassung von Bibliothekstypen und -membern verhindert, und für manche Entwickler wird die Benutzerfreundlichkeit verringert. Außerdem ist die Erweiterbarkeit einer der wesentlichen Vorteile bei der Verwendung eines objektorientiertes Frameworks. Erwägen Sie Entscheidungen sorgfältig, durch die dieser Vorteil eingeschränkt wird.
Versiegeln Sie Klassen nur, wenn gute Gründe dafürsprechen.
Gehen Sie nicht davon aus, dass eine Klasse versiegelt werden sollte, weil Sie kein Szenario vorhersehen, in dem das Erweitern einer Klasse wünschenswert ist. Versiegeln Sie Klassen, die bestimmte Bedingungen erfüllen:
Die Klasse ist statisch.
Die Klasse enthält geerbte geschützte Member mit sicherheitsrelevanten Informationen.
Die Klasse erbt zahlreiche virtuelle Member, und der Aufwand für Entwicklung und Testen zum Versiegeln jedes Members ist wesentlich höher als das Versiegeln der ganzen Klasse.
Die Klasse ist ein Attribut, das eine schnelle Suche mithilfe von Reflektion erfordert. Durch das Versiegeln eines Attributs wird die Leistung der Reflexion beim Abrufen von Attributen erhöht.
Deklarieren Sie keine geschützten oder virtuellen Member für versiegelte Typen.
Wenn ein Typ versiegelt ist, kann er über keine abgeleiteten Klassen verfügen. Der Zugriff auf geschützte Member kann nur aus einer abgeleiteten Klasse erfolgen, und virtuelle Member können nur in einer abgeleiteten Klasse überschrieben werden.
Versiegeln Sie Member, die Sie überschreiben.
Mit diesem Verfahren können Sie sicherstellen, dass abgeleitete Klassen nicht Verhalten ändern oder umgehen, das für die aktuelle Klasse und alle abgeleiteten Klassen erforderlich ist.
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.