Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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é.
Přesněji řečeno, třída se stane základní třídou, když je z ní odvozena jiná třída. Pro účely této části je však základní třída třídou určená především k poskytování společné abstrakce nebo k tomu, aby jiné třídy znovu využily některé výchozí implementace prostřednictvím dědičnosti. Základní třídy se obvykle nacházejí uprostřed hierarchií dědičnosti, mezi abstrakcí v kořenovém adresáři hierarchie a několika vlastními implementacemi v dolní části.
Slouží jako pomocníci při implementaci abstrakcí. Jednou z abstrakcí Frameworku pro seřazené kolekce položek je rozhraní IList<T>. Implementace IList<T> není triviální, a proto Framework poskytuje několik základních tříd, jako jsou Collection<T> a KeyedCollection<TKey,TItem>, které slouží jako pomocné třídy pro implementaci vlastních kolekcí.
Základní třídy se obvykle nehodí k tomu, aby sloužily jako abstrakce samy o sobě, protože obvykle obsahují příliš mnoho implementace. Například Collection<T> základní třída obsahuje velké množství implementací souvisejících se skutečností, že implementuje negenerické IList rozhraní (pro lepší integraci s negenerickými kolekcemi) a skutečnost, že jde o kolekci položek uložených v paměti v některém z jejích polí.
Jak jsme již dříve probírali, základní třídy mohou poskytovat neocenitelnou pomoc uživatelům, kteří potřebují implementovat abstrakce, ale zároveň mohou být významnou odpovědností. Přidají povrchovou oblast a zvětší hloubku hierarchií dědičnosti, takže koncepčně komplikují architekturu. Základní třídy by proto měly být použity pouze v případě, že poskytují významné hodnoty uživatelům architektury. Měly by se jim vyhnout, pokud poskytují hodnotu pouze implementátorům architektury, v takovém případě by se mělo zvážit delegování na interní implementaci místo dědičnosti ze základní třídy.
✔️ ZVAŽTE, aby základní třídy byly abstraktní, i když neobsahují žádné abstraktní členy. To jasně komunikuje uživatelům, že třída je navržena výhradně k tomu, aby byla děděna.
✔️ Uvažujte o umístění základních tříd do samostatného oboru názvů, aby se odlišily od typů scénářů hlavní linie. Podle definice jsou základní třídy určeny pro pokročilé scénáře rozšiřitelnosti, a proto nejsou zajímavé pro většinu uživatelů.
❌ Vyhněte se pojmenování základních tříd s příponou Base, pokud je třída určená pro použití ve veřejných rozhraních API.
Části z © 2005, 2009 Microsoft Corporation. Všechna práva vyhrazena.
Přetištěno se svolením Pearson Education, Inc. z Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition od Krzysztofa Cwaliny a Brada Abramse, vydáno 22. října 2008 nakladatelstvím Addison-Wesley Professional jako součást série Microsoft Windows Development.