Tovární vzor v C++

Tovarni Vzor V C



Factory Pattern je způsob vytváření objektů při vývoji softwaru, aniž byste museli znát konkrétní podrobnosti o tom, jak jsou vytvořeny. Poskytuje zjednodušené rozhraní pro vytváření objektů tím, že skrývá složitou logiku vytváření za tovární třídu. Patří do kategorie návrhových vzorů, které řeší mechanismy vytváření objektů. Tento článek popisuje tovární vzory v C++.

Úvod do továrního vzoru

Návrhový vzor je metoda řešení opakujících se problémů v návrhu softwaru. Factory Pattern je jedním z návrhových vzorů, které pomáhají vytvářet objekty flexibilním a odděleným způsobem.

Factory Pattern je kreativní návrhový vzor v C++, který umožňuje vytváření objektů bez explicitní znalosti třídy objektu. Poskytuje způsob, jak zapouzdřit složitou logiku vytváření objektů do samostatné tovární třídy. To se provádí definováním společného rozhraní pro vytváření objektů, kde je konkrétní třída objektu určena za běhu.







Místo přímého vytváření objektu používáme tovární metodu, která nám poskytuje instanci objektu, který chceme. Tímto způsobem můžeme skrýt složité kroky spojené s vytvářením objektu a zjednodušit změnu nebo úpravu objektu v budoucnu.



Proč používat tovární vzor?

Existuje několik důvodů, proč bychom mohli chtít použít tovární vzor. Jedním z důvodů je, že umožňuje oddělení kódu od konkrétních tříd. Použitím tovární metody můžeme snadno přepínat jednu třídu za jinou, aniž bychom museli měnit jakýkoli další kód a zefektivnit ji.



Dalším důvodem pro použití továrního vzoru je to, že může kód lépe testovat. Tovární vzory nám umožňují testovat kód vytvářením falešných objektů.





Zde jsou některé z dalších důvodů, proč se tovární vzor používá v C++:

  • Vzor tovární metody se používá, když třída předem neví, jaké objekty potřebuje vytvořit.
  • Vzor se používá, když třída spoléhá na své podtřídy, aby specifikovala objekty, které vytváří.
  • Je to užitečné, když chcete zapouzdřit logiku pro vytvoření složitého objektu na jednom místě.

Příklad továrního vzoru v C++

V C++ můžeme implementovat tovární vzor definováním abstraktní základní třídy pomocí metody virtuální továrny. Tato metoda by měla vrátit ukazatel na požadovanou instanci třídy. Poté můžeme z této základní třídy odvodit konkrétní třídy a přepsat tovární metodu, abychom vrátili instanci příslušné třídy.



Zde je příklad toho, jak bychom mohli použít tuto implementaci továrního vzoru:

#include

pomocí jmenného prostoru std ;

třída Tvar {

veřejnost :

virtuální prázdnota kreslit ( ) = 0 ;

statický Tvar * createShape ( int typ ) ;

} ;

třída Kruh : veřejný tvar {

veřejnost :

prázdnota kreslit ( ) {

cout << 'Nakreslení kruhu.' << endl ;

}

} ;

třída Obdélník : veřejný tvar {

veřejnost :

prázdnota kreslit ( ) {

cout << 'Nakreslete obdélník.' << endl ;

}

} ;

Tvar * Tvar :: createShape ( int typ ) {

-li ( typ == 1 ) {
vrátit se nový kruh ( ) ;
} jiný -li ( typ == 2 ) {
vrátit se nový obdélník ( ) ;
} jiný {
vrátit se nullptr ;
}
}


int hlavní ( ) {

Tvar * kruh = Tvar :: createShape ( 1 ) ;

kruh -> kreslit ( ) ;

Tvar * obdélník = Tvar :: createShape ( 2 ) ;

obdélník -> kreslit ( ) ;

vrátit se 0 ;

}

V tomto příkladu máme třídu Shape se dvěma odvozenými třídami: Circle a Rectangle. Třída Shape má čistě virtuální funkci draw(), která je implementována odvozenými třídami. Třída Shape má také statickou funkci createShape(int type), která funguje jako tovární metoda pro vytváření instancí odvozených tříd na základě zadaného typu. Funkce draw() se volá na vytvořené objekty, aby demonstrovala jejich specifické chování.

  Obrázek obsahující text, písmo, popis snímku obrazovky automaticky vygenerován

Závěr

Factory Pattern je kreativní návrhový vzor v C++, který umožňuje vytváření objektů bez explicitní znalosti třídy objektu. Poskytuje zjednodušené rozhraní pro vytváření objektů tím, že skrývá složitou logiku vytváření za tovární třídu. To se provádí definováním společného rozhraní pro vytváření objektů, kde je konkrétní třída objektu určena za běhu. Přečtěte si více o továrních vzorech v tomto článku.