Tehdasmalli C++:ssa

Tehdasmalli C Ssa



Factory Pattern on tapa luoda objekteja ohjelmistokehityksessä ilman, että sinun tarvitsee tietää niiden luomisen yksityiskohtia. Se tarjoaa yksinkertaistetun käyttöliittymän objektien luomiseen piilottamalla monimutkaisen luontilogiikan tehdasluokan taakse. Se kuuluu suunnittelumallien luokkaan, joka käsittelee objektin luomismekanismeja. Tämä artikkeli kattaa tehdasmallit C++:ssa.

Tehdasmallin esittely

Suunnittelumalli on menetelmä ohjelmistosuunnittelun toistuvien ongelmien ratkaisemiseksi. Factory Pattern on yksi suunnittelukuvioista, jotka auttavat luomaan esineitä joustavasti ja erillään.

Factory Pattern on luova suunnittelumalli C++:ssa, joka mahdollistaa objektien luomisen ilman, että kohteen luokkaa nimenomaisesti tiedetään. Se tarjoaa tavan kapseloida monimutkaisen objektin luontilogiikan erilliseen tehdasluokkaan. Tämä tehdään määrittämällä yhteinen rajapinta objektien luomiseen, jossa objektin tietty luokka määritetään ajon aikana.







Sen sijaan, että luomme objektin suoraan, käytämme tehdasmenetelmää antamaan meille haluamasi objektin esiintymä. Näin voimme piilottaa objektin luomiseen liittyvät monimutkaiset vaiheet ja helpottaa objektin vaihtamista tai muokkaamista tulevaisuudessa.



Miksi käyttää tehdasmallia?

On useita syitä, miksi saatamme haluta käyttää tehdasmallia. Yksi syy on se, että se mahdollistaa koodin irrottamisen tietyistä luokista. Tehdasmenetelmää käyttämällä voimme helposti vaihtaa luokan toiseen ilman, että tarvitsee muuttaa mitään muuta koodia ja tehdä siitä tehokkaampaa.



Toinen syy tehdasmallin käyttöön on se, että se voi tehdä koodista testattavamman. Tehdasmallien avulla voimme testata koodia luomalla valeobjekteja.





Tässä on muutamia syitä, miksi tehdasmallia käytetään C++:ssa:

  • Factory Method -mallia käytetään, kun luokka ei tiedä etukäteen, mitä objekteja sen on luotava.
  • Mallia käytetään, kun luokka luottaa alaluokkiinsa määrittääkseen luomansa objektit.
  • Se on hyödyllinen, kun haluat kapseloida monimutkaisen objektin luomisen logiikan yhteen paikkaan.

Esimerkki tehdasmallista C++:ssa

C++:ssa voimme toteuttaa tehdasmallin määrittelemällä abstraktin perusluokan virtuaalisen tehdasmetodin avulla. Tämän menetelmän pitäisi palauttaa osoitin haluttuun luokkainstanssiin. Sen jälkeen voimme johtaa konkreettisia luokkia tästä perusluokasta ja ohittaa tehdasmetodin palauttaaksemme sopivan luokan esiintymän.



Tässä on esimerkki siitä, kuinka voimme käyttää tätä tehdasmallin toteutusta:

#include

käyttäen nimiavaruutta std ;

luokan muoto {

julkinen :

virtuaalinen mitätön piirtää ( ) = 0 ;

staattinen Muoto * luo muoto ( int tyyppi ) ;

} ;

luokan ympyrä : julkinen muoto {

julkinen :

mitätön piirtää ( ) {

cout << 'Ympyrän piirtäminen.' << endl ;

}

} ;

luokan suorakulmio : julkinen muoto {

julkinen :

mitätön piirtää ( ) {

cout << 'Suorakulmion piirtäminen.' << endl ;

}

} ;

Muoto * Muoto :: luo muoto ( int tyyppi ) {

jos ( tyyppi == 1 ) {
palata uusi ympyrä ( ) ;
} muu jos ( tyyppi == 2 ) {
palata uusi suorakulmio ( ) ;
} muu {
palata nullptr ;
}
}


int pää ( ) {

Muoto * ympyrä = Muoto :: luo muoto ( 1 ) ;

ympyrä -> piirtää ( ) ;

Muoto * suorakulmio = Muoto :: luo muoto ( 2 ) ;

suorakulmio -> piirtää ( ) ;

palata 0 ;

}

Tässä esimerkissä meillä on muotoluokka, jossa on kaksi johdettua luokkaa: ympyrä ja suorakulmio. Shape-luokassa on puhdas virtuaalinen funktio draw(), joka on toteutettu johdetuilla luokilla. Shape-luokassa on myös staattinen funktio createShape(int type), joka toimii tehdasmenetelmänä luodessaan esiintymiä johdetuista luokista määritetyn tyypin perusteella. Draw()-funktiota kutsutaan luoduille objekteille osoittamaan niiden erityistä käyttäytymistä.

  Automaattisesti luotu kuva, joka sisältää tekstiä, fontin ja kuvakaappauksen

Johtopäätös

Factory Pattern on luova suunnittelumalli C++:ssa, joka mahdollistaa objektien luomisen ilman, että kohteen luokkaa nimenomaisesti tiedetään. Se tarjoaa yksinkertaistetun käyttöliittymän objektien luomiseen piilottamalla monimutkaisen luontilogiikan tehdasluokan taakse. Tämä tehdään määrittämällä yhteinen rajapinta objektien luomiseen, jossa objektin tietty luokka määritetään ajon aikana. Lue lisää tehdasmalleista tästä artikkelista.