Tovární metoda je kreační návrhový vzor, tj. Související s tvorbou objektu. Ve vzoru Factory vytváříme objekt bez vystavení logiky vytváření klientovi a klient používá stejné společné rozhraní k vytvoření nového typu objektu.
Myšlenkou je použití statické členské funkce (metoda statické továrny), která vytvoří & vrací instance a skrývá podrobnosti modulů třídy před uživatelem.
Tovární vzor je jedním ze základních konstrukčních principů pro vytvoření objektu, který klientům umožňuje vytvářet objekty knihovny (vysvětleno níže) takovým způsobem, že nemá úzké propojení s hierarchií tříd knihovny.
Co je míněno, když mluvíme o knihovně a klientech?
Knihovna je něco, co poskytuje nějaká třetí strana, která vystavuje některá veřejná API a klienti volají na tato veřejná API, aby dokončili svůj úkol. Velmi jednoduchým příkladem mohou být různé druhy pohledů poskytovaných operačním systémem Android.
Proč tovární vzor?
Rozumíme tomu na příkladu:
Výstup:
I am two wheeler
Jaké jsou problémy s výše uvedeným designem?
Jak jste si všimli ve výše uvedeném příkladu, klient vytváří objekty buď TwoWheeleru nebo FourWheeler na základě nějakého vstupu během stavby jeho objektu.
Řekněme, že knihovna zavádí novou třídu ThreeWheeler, která zahrnuje také vozidla se třemi koly. Co by se stalo? Klient skončí řetězením nového jiného, pokud v podmíněném žebříčku vytvoří objekty ThreeWheeler. Což zase bude vyžadovat, aby byl klient znovu zkompilován. Takže pokaždé, když se na straně knihovny provede nová změna, bude klient muset na konci provést nějaké odpovídající změny a znovu zkompilovat kód. Zní to špatně? To je velmi špatná praxe designu.
Jak se problému vyhnout?
Odpověď zní, vytvořte statickou (nebo tovární) metodu. Uvidíme níže uvedený kód.
Výstup:
I am three wheeler
Ve výše uvedeném příkladu jsme zcela oddělili výběr typu pro vytvoření objektu z klienta. Knihovna je nyní odpovědná za rozhodnutí, který typ objektu vytvořit na základě vstupu. Klient potřebuje zavolat metodu Create do továrny knihovny a předat požadovaný typ bez obav ze skutečné implementace vytváření objektů.
Díky Rumplestiltskin za poskytnutí výše uvedeného vysvětlení.
Další příklady tovární metody:
- Řekněme, že v systému „Kreslení“ lze v závislosti na vstupu uživatele nakreslit různé obrázky, jako je čtverec, obdélník nebo kruh. Zde můžeme pomocí tovární metody vytvářet instance v závislosti na vstupu uživatele. Při přidávání nového typu tvaru není třeba měnit kód klienta.
- Další příklad: Na webových stránkách o cestování si můžeme rezervovat jízdenky na vlak a také lístky na autobusy a letenky. V tomto případě může uživatel zadat svůj typ cesty jako „autobus“, „vlak“ nebo „let“.
Zde máme abstraktní třídu „AnyTravel“ se statickou členskou funkcí „GetObject“, která v závislosti na typu cesty uživatele vytvořit & návratový objekt ‚BusTravel‘ nebo ‚TrainTravel‘. „BusTravel“ nebo „TrainTravel“ mají společné funkce, jako je jméno cestujícího, Origin, parametry destinace.
Díky Abhijit Saha, která uvedla první dva příklady.