Freigeben über


Versiegeln

Hinweis

Diese Inhalte wurden mit Genehmigung von Pearson Education, Inc. aus Framework Design Guidelines nachgedruckt: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition. Diese Ausgabe wurde 2008 veröffentlicht, und das Buch wurde seitdem in der dritten Ausgabe vollständig überarbeitet. Einige der Informationen auf dieser Seite sind möglicherweise veraltet.

Eines der Merkmale objektorientierter Frameworks ist, dass Entwickler sie auf eine Weise erweitern und anpassen können, die von den Entwicklern des Frameworks nicht vorhergesehen wurde. Dies ist sowohl die Stärke als auch die Gefahr eines erweiterbaren Entwurfs. Wenn Sie Ihr Framework entwerfen, ist es daher sehr wichtig, die Erweiterbarkeit sorgfältig zu planen, wenn sie erwünscht ist, und die Erweiterbarkeit einzuschränken, wenn sie gefährlich ist.

Ein mächtiger Mechanismus, der die Erweiterbarkeit verhindert, ist die Versiegelung. Sie können entweder die Klasse oder einzelne Member versiegeln. Durch das Versiegeln einer Klasse wird verhindert, dass Benutzer von der Klasse erben können. Das Versiegeln eines Members verhindert, dass Benutzer einen bestimmten Member überschreiben können.

❌ Versiegeln Sie KEINE Klassen, ohne einen guten Grund dafür zu haben.

Das Versiegeln einer Klasse, weil Sie sich kein Erweiterungsszenario vorstellen können, ist kein guter Grund. Benutzer*innen des Frameworks nutzen aus verschiedenen, nicht offensichtlichen Gründen (z. B. Hinzufügen von Convenience-Membern) gerne die Vererbung von Klassen. Beispiele für nicht offensichtliche Gründe, warum Benutzer*innen die Vererbung von einem Typ verwenden möchten, finden Sie unter Nicht versiegelte Klassen.

Gute Gründe für die Versiegelung einer Klasse sind beispielsweise die folgenden:

  • Die-Klasse ist eine statische Klasse. Siehe Entwurf statischer Klassen.

  • Die Klasse speichert sicherheitsrelevante Geheimnisse in geerbten geschützten Membern.

  • Die Klasse erbt viele virtuelle Member, und die Kosten für eine individuelle Versiegelung würden die Vorteile der nicht versiegelten Klasse überwiegen.

  • Bei der Klasse handelt es sich um ein Attribut, das sehr schnelle Laufzeitsuche erfordert. Versiegelte Attribute weisen etwas höhere Leistungsstufen als nicht versiegelte auf. Siehe Attribute.

❌ Deklarieren Sie geschützte Member NICHT für versiegelte Typen.

Per Definition kann von einem versiegelten Typ nicht geerbt werden. Dies bedeutet, dass geschützte Member für versiegelte Typen nicht aufgerufen werden können und dass virtuelle Methoden für versiegelte Typen nicht überschrieben werden können.

✔️ ERWÄGEN Sie das Versiegeln von Membern, die Sie überschreiben.

Probleme, die sich aus der Einführung von virtuellen Membern ergeben können (in Virtuelle Members erläutert), gelten auch für Außerkraftsetzungen, wenn auch in einem etwas geringeren Ausmaß. Das Versiegeln einer Außerkraftsetzung schützt Sie ab diesem Punkt in der Vererbungshierarchie vor diesen Problemen.

Teile ©2005, 2009 Microsoft Corporation. Alle Rechte vorbehalten.

Nachdruck mit Genehmigung von Pearson Education, Inc aus Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition von Krzysztof Cwalina und Brad Abrams, veröffentlicht am 22. Oktober 2008 durch Addison-Wesley Professional als Teil der Microsoft Windows Development Series.

Weitere Informationen