Tehase muster C++ keeles

Tehase Muster C Keeles



Tehase muster on viis tarkvaraarenduses objektide loomiseks, ilma et peaksite teadma nende loomise üksikasju. See pakub lihtsustatud liidest objektide loomiseks, varjates keeruka loomisloogika tehaseklassi taha. See kuulub disainimustrite kategooriasse, mis käsitlevad objektide loomise mehhanisme. See artikkel hõlmab C++ tehasemustreid.

Tehase mustri tutvustus

Disainimuster on meetod tarkvaradisaini korduvate probleemide lahendamiseks. Tehase muster on üks disainimustritest, mis aitab luua objekte paindlikul ja lahtiühendatud viisil.

Tehase muster on C++ loominguline kujundusmuster, mis võimaldab objekte luua ilma objekti klassi selgesõnaliselt teadmata. See annab võimaluse kompleksse objekti loomise loogika kapseldamiseks eraldi tehaseklassi. Seda tehakse objektide loomiseks ühise liidese määratlemisega, kus objekti konkreetne klass määratakse käitusajal.







Selle asemel, et luua objekti otse, kasutame tehase meetodit, et anda meile soovitud objekti eksemplar. Nii saame peita objekti loomisega seotud keerulised sammud ja muuta objekti edaspidise muutmise või muutmise lihtsamaks.



Miks kasutada tehasemustrit?

On mitmeid põhjuseid, miks võiksime soovida kasutada tehase mustrit. Üks põhjus on see, et see võimaldab koodi lahti siduda konkreetsetest klassidest. Tehasemeetodit kasutades saame hõlpsalt ühe klassi teise vastu vahetada, ilma et peaksime muud koodi muutma ja seda tõhusamaks muutma.



Tehase mustri kasutamise teine ​​põhjus on see, et see võib muuta koodi paremini testitavaks. Tehasemustrid võimaldavad meil testida koodi, luues näidisobjekte.





Siin on veel mõned põhjused, miks C++-s kasutatakse tehasemustrit:

  • Tehase meetodi mustrit kasutatakse siis, kui klass ei tea ette, milliseid objekte ta peab looma.
  • Mustrit kasutatakse siis, kui klass tugineb oma alamklassidele, et määrata kindlaks loodavad objektid.
  • See on kasulik, kui soovite ühte kohta koondada keeruka objekti loomise loogika.

Tehase mustri näide C++ keeles

C++-s saame tehasemustri realiseerida, defineerides virtuaalse tehase meetodiga abstraktse baasklassi. See meetod peaks tagastama kursori soovitud klassi eksemplarile. Pärast seda saame sellest baasklassist tuletada konkreetsed klassid ja alistada tehase meetodi, et tagastada vastava klassi eksemplar.



Siin on näide sellest, kuidas saaksime seda tehasemustri teostust kasutada:

#include

kasutades nimeruumi std ;

klass Kuju {

avalik :

virtuaalne tühine joonistada ( ) = 0 ;

staatiline Kuju * loo Kuju ( int tüüp ) ;

} ;

klassi Ring : avalik kuju {

avalik :

tühine joonistada ( ) {

cout << 'Ringi joonistamine.' << endl ;

}

} ;

klassi ristkülik : avalik kuju {

avalik :

tühine joonistada ( ) {

cout << 'Ristküliku joonistamine.' << endl ;

}

} ;

Kuju * Kuju :: loo Kuju ( int tüüp ) {

kui ( tüüp == 1 ) {
tagasi uus ring ( ) ;
} muidu kui ( tüüp == 2 ) {
tagasi uus ristkülik ( ) ;
} muidu {
tagasi nullptr ;
}
}


int peamine ( ) {

Kuju * ring = Kuju :: loo Kuju ( 1 ) ;

ring -> joonistada ( ) ;

Kuju * ristkülik = Kuju :: loo Kuju ( 2 ) ;

ristkülik -> joonistada ( ) ;

tagasi 0 ;

}

Selles näites on meil Shape klass, millel on kaks tuletatud klassi: Circle ja Rectangle. Klassil Shape on puhas virtuaalne funktsioon draw(), mida rakendavad tuletatud klassid. Klassil Shape on ka staatiline funktsioon createShape(int type), mis toimib tehasemeetodina tuletatud klasside eksemplaride loomiseks määratud tüübi alusel. Funktsiooni draw() kutsutakse loodud objektidel näitama nende spetsiifilist käitumist.

  Pilt, mis sisaldab teksti, fonti ja ekraanipilti Kirjeldus genereeritakse automaatselt

Järeldus

Tehase muster on C++ loominguline kujundusmuster, mis võimaldab objekte luua ilma objekti klassi selgesõnaliselt teadmata. See pakub lihtsustatud liidest objektide loomiseks, varjates keeruka loomisloogika tehaseklassi taha. Seda tehakse objektide loomiseks ühise liidese määratlemisega, kus objekti konkreetne klass määratakse käitusajal. Lisateavet tehase mustrite kohta leiate sellest artiklist.