Sdílet prostřednictvím


Virtuální členové

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é.

Virtuální členy je možné přepsat, čímž se změní chování podtřídy. Jsou poměrně podobné zpětnému volání z hlediska rozšiřitelnosti, které poskytují, ale jsou lepší z hlediska výkonu spouštění a spotřeby paměti. Virtuální členové se také cítí přirozeněji ve scénářích, které vyžadují vytvoření speciálního typu existujícího typu (specializace).

Virtuální členové fungují lépe než zpětná volání a události, ale neprovádějí lépe než virtuální metody.

Hlavní nevýhodou virtuálních členů je, že chování virtuálního člena lze změnit pouze v době kompilace. Chování zpětného volání lze změnit za běhu.

Virtuální členové, jako jsou zpětná volání (a možná více než zpětná volání), jsou nákladné pro návrh, testování a údržbu, protože jakékoli volání virtuálního člena může být přepsáno nepředvídatelnými způsoby a může provádět libovolný kód. K jasnému definování kontraktu virtuálních členů je obvykle potřeba mnohem větší úsilí, takže náklady na návrh a dokumentování jsou vyšší.

❌ NEPOUŽÍVEJTE virtuální členy, pokud k tomu nemáte dobrý důvod a víte o všech nákladech souvisejících s návrhem, testováním a údržbou virtuálních členů.

Virtuální členové jsou méně odpustit z hlediska změn, které je možné u nich provést bez narušení kompatibility. Jsou také pomalejší než ne virtuální členové, většinou proto, že volání virtuálních členů nejsou vložena.

✔️ ZVAŽTE omezení rozšiřitelnosti pouze na to, co je naprosto nezbytné.

✔️ Upřednostňujte ochranu přístupnosti před veřejnými přístupnostmi pro virtuální členy. Veřejné členy by měly poskytovat rozšiřitelnost (v případě potřeby) voláním do chráněného virtuálního člena.

Veřejné členy třídy by měly poskytovat správnou sadu funkcí pro přímé uživatele této třídy. Virtuální členy jsou navržené tak, aby se přepsaly v podtřídách a chráněná přístupnost je skvělý způsob, jak nastavit rozsah všech bodů virtuální rozšiřitelnosti na místo, kde je lze použít.

© Čá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é