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é.
Abstrakce je typ, který popisuje kontrakt, ale neposkytuje úplnou implementaci kontraktu. Abstrakce se obvykle implementují jako abstraktní třídy nebo rozhraní a mají dobře definovanou sadu referenční dokumentace popisující požadovanou sémantiku typů implementujících kontrakt. Mezi nejdůležitější abstrakce v rozhraní .NET Framework patří Stream, IEnumerable<T>a Object.
Frameworky můžete rozšířit implementací konkrétního typu, který podporuje kontrakt abstrakce, a použitím tohoto konkrétního typu s rozhraními API frameworku, jež pracují s touto abstrakcí.
Smysluplná a užitečná abstrakce, která je schopna odolat testu času, je velmi obtížné navrhnout. Hlavní potíž je získat správnou sadu členů, ani více, ani méně. Pokud má abstrakce příliš mnoho členů, stává se obtížné nebo dokonce nemožné implementovat. Pokud má pro slíbenou funkci příliš málo členů, stane se v mnoha zajímavých scénářích zbytečné.
Příliš mnoho abstrakcí v rámci také negativně ovlivňuje použitelnost architektury. Často je poměrně obtížné pochopit abstrakci, aniž byste porozuměli tomu, jak zapadá do širšího obrazu konkrétních implementací a rozhraní API, která pracují na abstrakci. Také názvy abstrakcí a jejich členů jsou nutně abstraktní, což z nich často dělá záhadné a nesrozumitelné, aniž byste nejprve porozuměli širšímu kontextu jejich použití.
Abstrakce však poskytují extrémně výkonnou rozšiřitelnost, kterou ostatní mechanismy rozšiřitelnosti často neodpovídají. Jsou jádrem mnoha architektur, jako jsou moduly plug-in, inverze řízení (IoC), kanály atd. Jsou také velmi důležité pro testovatelnost architektur. Dobré abstrakce umožňují odstraňovat těžké závislosti pro účely jednotkového testování. V souhrnu jsou abstrakce zodpovědné za vyhledávanou bohatost moderních objektově orientovaných architektur.
❌ NEPOSKYTUJTE abstrakce, pokud nejsou testovány vývojem několika konkrétních implementací a rozhraní API, které abstrakce využívají.
✔️ Při návrhu abstrakce vybírejte pečlivě mezi abstraktní třídou a rozhraním.
✔️ ZVAŽTE poskytnutí referenčních testů pro konkrétní implementace abstrakcí. Tyto testy by měly uživatelům umožnit otestovat, zda jejich implementace správně implementují kontrakt.
Čá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.