Továrenský vzor v C++

Tovarensky Vzor V C



Factory Pattern je spôsob vytvárania objektov pri vývoji softvéru bez toho, aby ste museli poznať konkrétne podrobnosti o tom, ako sú vytvorené. Poskytuje zjednodušené rozhranie na vytváranie objektov skrytím komplexnej logiky vytvárania za výrobnú triedu. Patrí do kategórie návrhových vzorov, ktoré riešia mechanizmy vytvárania objektov. Tento článok sa zaoberá továrenskými vzormi v C++.

Úvod do výrobného vzoru

Návrhový vzor je metóda riešenia opakujúcich sa problémov pri návrhu softvéru. Factory Pattern je jedným z návrhových vzorov, ktoré pomáhajú vytvárať objekty flexibilným a oddeleným spôsobom.

Factory Pattern je tvorivý návrhový vzor v C++, ktorý umožňuje vytváranie objektov bez toho, aby sme explicitne poznali triedu objektu. Poskytuje spôsob na zapuzdrenie komplexnej logiky vytvárania objektov v rámci samostatnej továrenskej triedy. Robí sa to definovaním spoločného rozhrania na vytváranie objektov, kde sa špecifická trieda objektu určuje za behu.







Namiesto priameho vytvárania objektu používame metódu factory, ktorá nám poskytne inštanciu požadovaného objektu. Týmto spôsobom môžeme skryť zložité kroky pri vytváraní objektu a zjednodušiť tak zmenu alebo úpravu objektu v budúcnosti.



Prečo používať továrenský vzor?

Existuje niekoľko dôvodov, prečo by sme mohli chcieť použiť továrenský vzor. Jedným z dôvodov je, že umožňuje oddelenie kódu od konkrétnych tried. Použitím továrenskej metódy môžeme jednoducho vymeniť jednu triedu za inú bez toho, aby sme museli meniť akýkoľvek iný kód a zefektívniť to.



Ďalším dôvodom na použitie továrenského vzoru je to, že kód môže byť testovateľnejší. Továrenské vzory nám umožňujú testovať kód vytváraním falošných objektov.





Tu sú niektoré z ďalších dôvodov, prečo sa v C++ používa továrenský vzor:

  • Vzor továrenskej metódy sa používa, keď trieda vopred nevie, aké objekty potrebuje vytvoriť.
  • Vzor sa používa, keď sa trieda spolieha na svoje podtriedy pri špecifikovaní objektov, ktoré vytvára.
  • Je to užitočné, keď chcete zhrnúť logiku na vytvorenie komplexného objektu na jednom mieste.

Príklad továrenského vzoru v C++

V C++ môžeme implementovať továrenský vzor definovaním abstraktnej základnej triedy pomocou metódy virtuálnej továrne. Táto metóda by mala vrátiť ukazovateľ na požadovanú inštanciu triedy. Potom môžeme z tejto základnej triedy odvodiť konkrétne triedy a prepísať továrenskú metódu, aby sme vrátili inštanciu príslušnej triedy.



Tu je príklad toho, ako môžeme použiť túto implementáciu továrenského vzoru:

#include

pomocou menného priestoru std ;

trieda Tvar {

verejnosti :

virtuálne neplatné kresliť ( ) = 0 ;

statické Tvar * createShape ( int typu ) ;

} ;

triedny Kruh : verejný tvar {

verejnosti :

neplatné kresliť ( ) {

cout << 'Nakreslenie kruhu.' << endl ;

}

} ;

triedy Obdĺžnik : verejný tvar {

verejnosti :

neplatné kresliť ( ) {

cout << 'Nakreslenie obdĺžnika.' << endl ;

}

} ;

Tvar * Tvar :: createShape ( int typu ) {

ak ( typu == 1 ) {
vrátiť nový kruh ( ) ;
} inak ak ( typu == 2 ) {
vrátiť nový obdĺžnik ( ) ;
} inak {
vrátiť nullptr ;
}
}


int Hlavná ( ) {

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

kruh -> kresliť ( ) ;

Tvar * obdĺžnik = Tvar :: createShape ( 2 ) ;

obdĺžnik -> kresliť ( ) ;

vrátiť 0 ;

}

V tomto príklade máme triedu Tvar s dvomi odvodenými triedami: Kruh a Obdĺžnik. Trieda Shape má čisto virtuálnu funkciu draw(), ktorú implementujú odvodené triedy. Trieda Shape má tiež statickú funkciu createShape (typ int), ktorá funguje ako továrenská metóda na vytváranie inštancií odvodených tried na základe zadaného typu. Funkcia draw() sa volá na vytvorené objekty, aby demonštrovala ich špecifické správanie.

  Automaticky vygenerovaný obrázok obsahujúci text, písmo, popis snímky obrazovky

Záver

Factory Pattern je tvorivý návrhový vzor v C++, ktorý umožňuje vytváranie objektov bez toho, aby sme explicitne poznali triedu objektu. Poskytuje zjednodušené rozhranie na vytváranie objektov skrytím komplexnej logiky vytvárania za výrobnú triedu. Robí sa to definovaním spoločného rozhrania na vytváranie objektov, kde sa špecifická trieda objektu určuje za behu. Prečítajte si viac o továrenských vzoroch v tomto článku.