Tovární Metoda Design Vzor v Pythonu

Úvod

V tomto článku, budeme potápění do Tovární Metody Design Vzor, realizován v Pythonu.

návrhové vzory definují osvědčená řešení různých opakujících se problémů ve vývoji softwaru. Nepředstavují skutečný kód, ale spíše způsoby, jak můžeme uspořádat náš kód pro optimální výsledky.

ve světě omezených zdrojů nám návrhové vzory pomáhají dosáhnout co nejvíce výsledků s nejmenším množstvím použitých zdrojů. Je také důležité si uvědomit, že Návrhové Vzory se nevztahují na všechny situace, a to je zásadní pro posouzení problému s cílem vybrat nejlepší přístup pro daný scénář.

návrhové vzory jsou rozděleny do několika širokých kategorií, i když hlavně do tvůrčích vzorců, strukturálních vzorců a vzorců chování.

vzor tovární metody je Kreační návrhový vzor.

Tovární Metoda Design Vzor

Definice

Tovární Metoda se používá v objektově orientovaném programování jako prostředek k poskytování továrny rozhraní pro vytváření objektů. Tato rozhraní definují obecnou strukturu, ale neinicializují objekty. Inicializace je ponechána na konkrétnějších podtřídách.

nadřazená třída / rozhraní obsahuje všechny standardní a obecné chování, které lze sdílet mezi podtřídy různých typů. Podtřída je zase zodpovědná za definici a instanci objektu na základě nadtřídy.

Motivace

hlavní motivací Tovární Metoda Design Vzor je zvýšit volné vazby v kódu prostřednictvím vytvoření abstraktní třídy, které budou použity k vytvoření různých typů objektů, které sdílejí některé společné atributy a funkce.

to má za následek zvýšenou flexibilitu a opětovné použití kódu, protože sdílená funkce nebude přepsána poté, co byla zděděna ze stejné třídy. Tento návrhový vzor je také známý jako virtuální Konstruktor.

vzor návrhu tovární metody se běžně používá v knihovnách tím, že umožňuje klientům vybrat si, jakou podtřídu nebo typ objektu vytvořit pomocí abstraktní třídy.

Tovární Metoda bude přijímat informace o požadované objekt, instanci a vrátí objekt zadaného typu. To dává naší aplikaci nebo knihovně jediný bod interakce s jinými programy nebo kousky kódu, čímž se zapouzdří naše funkce vytváření objektů.

Výchozí Implementace Metody

Náš program bude knihovna používá pro manipulaci s objekty tvar, pokud jde o vytvoření a dalších operací jako je přidání barvy a výpočet plochy tvaru.

uživatelé by měli mít možnost používat naši knihovnu k vytváření nových objektů. Můžeme začít tím, že vytváření jednotlivých tvarů a využijí je jak je, ale to by znamenalo, že mnoho společné logiky bude muset být přepsán pro každého a každého tvaru máme k dispozici.

první krok k řešení tohoto opakování by bylo vytvořit mateřskou tvar třídy, která má metody, jako například calculate_area() a calculate_perimeter(), a vlastnosti, jako jsou rozměry.

konkrétní tvarové objekty pak zdědí z naší základní třídy. Chcete-li vytvořit tvar, musíme určit, jaký tvar je vyžadován, a vytvořit pro něj podtřídu.

začneme vytvořením abstraktní třídy, která bude reprezentovat obecný tvar:

Toto je základní třída pro všechny naše tvary. Pojďme do toho a vytvoříme několik konkrétních, konkrétnějších tvarů:

doposud jsme vytvořili abstraktní třídu a rozšířili ji tak, aby vyhovovala různým tvarům, které budou k dispozici v naší knihovně. Aby bylo možné vytvořit různé objekty tvaru, klienti budou muset znát jména a podrobnosti o našich tvarech a samostatně provést tvorbu.

Zde přichází do hry tovární metoda.

Tovární Metoda design vzor nám pomůže abstraktní dostupných tvarů od klienta, tj. klient nemusí znát všechny tvary jsou k dispozici, ale spíše vytvořit pouze to, co potřebují během runtime. Umožní nám také centralizovat a zapouzdřit tvorbu objektů.

dosáhneme toho vytvořením ShapeFactory, které bude použito k vytvoření specifických tříd tvarů na základě vstupu klienta:

Toto je naše rozhraní pro tvorbu. Nevoláme konstruktéry betonových tříd, voláme továrnu a žádáme ji, aby vytvořila tvar.

naše ShapeFactory pracuje tak, že obdrží informace o tvaru, jako je název a požadované rozměry. Naše tovární metoda create_shape() pak bude použita k vytvoření a vrácení připravených objektů požadovaných tvarů.

klient nemusí vědět nic o vytvoření objektu nebo specifikách. Použití továrních objektů, které lze vytvořit objekty s minimální znalostí, jak funguje:

Spuštěn tento kód bude mít za následek:

Nebo bychom mohli postavit další tvar:

Co stojí za zmínku, je, že kromě klienta nemají vědět hodně o procesu tvorby – když jsme si jako na instanci objektu, nebudeme volat konstruktor třídy. Žádáme továrnu, aby to pro nás udělala na základě informací, které předáme funkci create_shape().

Klady a Zápory

Klady

Jednou z hlavních výhod použití Factory Metody návrhový vzor je, že náš kód se stává volně spojený v tom, že většina součástí našeho kódu jsou vědomi další komponenty ze stejné codebase.

to má za následek kód, který je snadno pochopitelné a testování a přidat další funkce pro konkrétní komponenty bez ovlivnění nebo přerušení celého programu.

vzor návrhu tovární metody také pomáhá dodržovat princip jednotné odpovědnosti, kde třídy a objekty, které zpracovávají specifické funkce, vedou k lepšímu kódu.

nevýhody

vytvoření více tříd nakonec vede k menší čitelnosti. V kombinaci s abstraktní továrnou (továrna továren) se kód brzy stane podrobným, i když udržovatelným.

závěr

Závěrem lze říci, že vzor návrhu tovární metody nám umožňuje vytvářet objekty bez zadání přesné třídy potřebné k vytvoření konkrétního objektu. To nám umožňuje oddělit náš kód a zvýšit jeho opětovnou použitelnost.

je důležité si uvědomit, že, stejně jako jakýkoli jiný návrhový vzor, je vhodný pouze pro specifické situace a ne každý scénář vývoje. Posouzení situace je rozhodující před rozhodnutím o implementaci vzoru návrhu výrobní metody, aby bylo možné využít výhod vzoru.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.