Co je to tovární vzor?
V počítačovém programování je továrna objekt používaný k vytváření dalších objektů. Objekty v tomto případě označují hodnoty, funkce nebo datové struktury použité v kódu. Tovární vzor je návrhový vzor, který se spoléhá na továrny, aby vytvářely objekty, nikoli aby je vytvářely přímo. To umožňuje snadnou změnu kódu a zachování flexibility. Je široce používán v objektově orientovaném počítačovém programování, které používá objekty k vytváření programů a aplikací.
Továrna má metodu každého druhu objektu, který může vytvořit. Metoda je v podstatě vzor. Skládá se ze souboru instrukcí, známých jako podprogram, který přijímá parametry obvykle poskytované uživatelem a vydává konkrétní objekt. Většina z toho se děje v zákulisí, aniž by o tom uživatel nebo klient něco věděl.
Při použití továrního vzoru program interaguje spíše se společným rozhraním než s přímou komunikací s třídami. Třída se používá jako šablona k vytváření objektů. Každý objekt konkrétní třídy sdílí stejné chování a základní atributy. Třídy lze dále rozdělit do podtříd, z nichž každá zdědí některé atributy třídy, do které patří. Objekt určité třídy je znám jako instance této třídy.
Pokud například uživatel chtěl, aby program vytvořil čtverec v programu nebo operačním systému, který používá vzor továrny, program oznámí továrně, že uživatel potřebuje objekt, který měl čtyři strany stejné délky a čtyři pravé úhly. Továrna by informovala metodu tvaru, že tvar byl potřebován. Mohlo by to předat některé parametry čtverce, například oblast, kterou by uživatel chtěl, aby čtverec pokryl.
Podtřídy by rozhodly, která třída by měla být použita. Příklad třídy třídy by se vrátil do továrny, která by ji předala programu, který si to nejprve vyžádal. Uživatel by viděl pouze to, že informace byly odeslány do továrny a vráceny výrobcem. Vnitřní fungování továrny není vidět.
Výhodou použití továrního vzoru je, že umožňuje snadnou změnu programu. Nové typy lze do továrního vzoru přidat jednoduše úpravou malého kusu kódu klienta, obvykle ne více než jednoho řádku. Jiné programovací vzory vyžadují, aby programátor změnil kód na každém místě, kde je objekt vytvořen.