Sdílet prostřednictvím


Zapečetění

Poznámka:

Tento obsah je znovu vytištěn oprávněním Pearson Education, Inc. z Framework Design Guidelines: Conventions, Idioms a Patterns for Reusable .NET Libraries, 2. vydání. Tato edice byla publikována v roce 2008 a kniha byla od té doby plně upravena ve třetím vydání. Některé informace na této stránce můžou být zastaralé.

Jednou z funkcí objektově orientovaných architektur je, že vývojáři je mohou rozšířit a přizpůsobit způsoby, které návrháři architektury neočekáovali. To je výkon i nebezpečí rozšiřitelného návrhu. Při návrhu architektury je proto velmi důležité pečlivě navrhnout rozšiřitelnost, pokud je to žádoucí, a omezit rozšiřitelnost, pokud je nebezpečná.

Výkonný mechanismus, který brání rozšiřitelnosti, je těsnicí. Můžete zapečetit třídu nebo jednotlivé členy. Zapečetění třídy brání uživatelům v dědění ze třídy. Zapečetění člena brání uživatelům v přepsání konkrétního člena.

❌ NEZApečetějte třídy bez dobrého důvodu k tomu.

Zapečetění třídy, protože si nemůžete představit scénář rozšiřitelnosti, není dobrým důvodem. Uživatelé architektury chtějí dědit z tříd z různých nejevných důvodů, jako je přidání členů pohodlí. Příklady nezapečetěných tříd najdete v příkladech nezjevných důvodů, proč uživatelé chtějí dědit z typu.

Mezi dobré důvody pro zapečetění třídy patří:

  • Třída je statická třída. Viz Návrh statické třídy.

  • Třída ukládá tajné kódy citlivé na zabezpečení do zděděných chráněných členů.

  • Třída dědí mnoho virtuálních členů a náklady na jejich zapečetění jednotlivě by převažovaly nad výhodami opuštění třídy nezapečetěné.

  • Třída je atribut, který vyžaduje velmi rychlé vyhledávání modulu runtime. Zapečetěné atributy mají mírně vyšší úrovně výkonu než nezapečetěné atributy. Viz atributy.

❌ DO NOT deklarujte chráněné nebo virtuální členy u zapečetěných typů.

Podle definice nelze zapečetěné typy dědit z. To znamená, že chráněné členy u zapečetěných typů nelze volat a virtuální metody u zapečetěných typů nelze přepsat.

✔️ ZVAŽTE zapečetění členů, které přepíšete.

Problémy, které můžou mít za následek zavedení virtuálních členů (probírané ve virtuálních členech), platí i pro přepsání, i když do mírně menší míry. Zapečetění přepsání chrání před těmito problémy počínaje tímto bodem v hierarchii dědičnosti.

© Části 2005, 2009 Microsoft Corporation. Všechna práva vyhrazena.

Reprinted by permission of Pearson Education, Inc. from Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition by Krzysztof Cwalina and Brad Abrams, published Oct 22, 2008 by Addison-Wesley Professional v rámci Microsoft Windows Development Series.

Viz také