Složení na záchranu dědictví

Můžete mi věřit na slovo, vždycky to končí tím, že

Pojem dědictví je pojem, který musí zvládnout, když člověk používá jazyk objekt

Pokud chcete uspořádat svůj kód kolem objektů, tam je silná možnost, že jste se potýkají s potřebou použít dědičnost.

Přestože legacy přináší mnoho nesporné výhody, to není odpověď na všechny problémy.

Pokud spadnete do nevybíravé použití dědičnosti, existuje vysoká šance, že mordiez prsty o pár měsíců později, když budete muset vyvinout funkční rozsah aplikace.

Samozřejmě, že je lákavé říct,"Pokud jsem se dědí z Foo, pak budu mít všechny jeho funkce bez jakéhokoliv úsilí.".

Ale ve stejné době, budete vázat velmi silně, aby oba své třídy a pokud přijdou, aby se rozcházejí v budoucnu nebudete moci, že stačí říct"Ok, mají stejné, když několik funkcí". Poté začnete si uvědomovat, že to je nyní obtížné testovat každá z těchto tříd, a že to není zdaleka zřejmé, do splitu. Začínají problémy. Obavy pro vývojáře nezažil, je to, že člověk nemusí uvědomit tuto skutečnost, že v polovině projektu, nebo když klient chce, aby se změny provozu existujícího prvku. Je nutné být schopen detekovat různé typy vztahů, které mohou existovat mezi třídami. Třída může být spojeno tři typy vztahů: složení bude vždy být více flexibilní než mixins a nebude souviset přímo do třídy, která hostí na rozdíl od dědické. Proto bylo nyní vozidla mají rychlosti, auto může vrátit a vrtulníky mohou létat. Nyní řekněme, že člověk chce vytvořit třídu pro letadla technicky může vrátit a letět. Naše letadlo je na půli cesty mezi autem a helikoptérou. Samozřejmě, mohli bychom použít mixins, ale to není ani více, ani méně, než je forma vícenásobná dědičnost. To by bylo mnohem lepší, než naše současná řešení a vyřeší náš problém. Jiné řešení by bylo použít složení, které umožňuje izolovat chování ve specializovaných tříd. Budeme tedy používat instance těchto tříd v jiných třídách. To proto umožňuje mít třídy, čisté, stručné, bez metody, které jsou zbytečné, a velmi snadno testovatelné.

Použít složení, je mít přístup k plnému výkonu specializované třídy pro manipulaci objektu.

Dnes budeme mluvit o softwarové architektury

Takže můžeme dát to na místě: uznávám, že to řešení je více upovídaný než mixins, ale je také mnohem pružnější a silný, a bude v praxi pravděpodobně nejjednodušší test.

Pro demonstraci jsem inicializovány objekty Kola a Křidýlka, ale v praxi to má tendenci dělat tuto práci inicializace v initialize metoda, která by umožnila mít trvalé předměty a aby se zabránilo problémy hospodářské soutěže. V praxi, není důvod dodržovat přesnou metodu, proč používat složení, mixins, nebo dědictví v exkluzivním způsobem, když můžete kombinovat tři. On musí vědět, jak se přizpůsobit a použít řešení, které bude více flexibilní. Budeme proto používat dědictví, když je to potřeba, pamatujte si, že"vývojář je člověk".

Budeme pokračovat do mixins, když je člověk v situaci,"vývojář se chová jako zaměstnanec".

To bude pravděpodobně na složení, pokud tento vztah se ukáže být komplexní, objekt vyžadující specializované třídy. Shrneme-li obsah tohoto článku, myslím, že z vaší třídy tak, aby byly co nejvíce modulární, jak je to možné, nenechte se držet sám sebe v krabici, která nemusí nakonec jít ven, pamatujte si, jasně vymezit odpovědnosti obou. Pokud vaše testy jsou obtížné realizovat, je to často znamení architektonický problém, který by měl dát blechu v uchu. v aplikaci Zobrazit. js. Sisi, to je možné Nemusíte zůstat sama.