Fabrikkmønster i C++

Fabrikkmonster I C



Fabrikkmønsteret er en måte å lage objekter i programvareutvikling på uten å måtte kjenne til de spesifikke detaljene om hvordan de lages. Det gir et forenklet grensesnitt for å lage objekter ved å skjule den komplekse opprettelseslogikken bak en fabrikkklasse. Det tilhører kategorien designmønstre som adresserer mekanismer for objektskaping. Denne artikkelen dekker fabrikkmønstre i C++.

Introduksjon til fabrikkmønsteret

Et designmønster er en metode for å løse tilbakevendende problemer i programvaredesign. Fabrikkmønsteret er et av designmønstrene som bidrar til å skape objekter på en fleksibel og frakoblet måte.

Factory Pattern er et kreativt designmønster i C++ som gjør det mulig å lage objekter uten eksplisitt å kjenne objektets klasse. Det gir en måte å innkapsle kompleks objektopprettingslogikk i en egen fabrikkklasse. Dette gjøres ved å definere et felles grensesnitt for å lage objekter, hvor den spesifikke klassen til objektet bestemmes ved kjøring.







I stedet for å lage et objekt direkte, bruker vi fabrikkmetoden for å gi oss en forekomst av objektet vi ønsker. På denne måten kan vi skjule de kompliserte trinnene som er involvert i å lage objektet og gjøre det enklere å endre eller modifisere objektet i fremtiden.



Hvorfor bruke fabrikkmønsteret?

Det er flere grunner til at vi kanskje vil bruke fabrikkmønsteret. En grunn er at den tillater frakobling av kode fra spesifikke klasser. Ved å bruke en fabrikkmetode kan vi enkelt bytte ut en klasse for en annen uten å måtte endre noen annen kode og gjøre den mer effektiv.



En annen grunn til å bruke fabrikkmønsteret er at det kan gjøre koden mer testbar. Fabrikkmønstre lar oss teste kode ved å lage falske objekter.





Her er noen av de flere grunnene til at fabrikkmønsteret brukes i C++:

  • Factory Method-mønsteret brukes når en klasse ikke på forhånd vet hvilke objekter den trenger å lage.
  • Mønsteret brukes når en klasse er avhengig av underklassene for å spesifisere objektene den oppretter.
  • Det er nyttig når du vil kapsle inn logikken for å lage et komplekst objekt på ett sted.

Eksempel på fabrikkmønster i C++

I C++ kan vi implementere fabrikkmønsteret ved å definere en abstrakt baseklasse med en virtuell fabrikkmetode. Denne metoden skal returnere en peker til ønsket klasseforekomst. Etter det kan vi utlede konkrete klasser fra denne basisklassen og overstyre fabrikkmetoden for å returnere en forekomst av den aktuelle klassen.



Her er et eksempel på hvordan vi kan bruke denne implementeringen av fabrikkmønsteret:

#include

bruker navneområde std ;

klasse Form {

offentlig :

virtuell tomrom tegne ( ) = 0 ;

statisk Form * skape form ( int type ) ;

} ;

klassesirkel : offentlig form {

offentlig :

tomrom tegne ( ) {

cout << 'Tegne en sirkel.' << endl ;

}

} ;

klasse rektangel : offentlig form {

offentlig :

tomrom tegne ( ) {

cout << 'Tegne et rektangel.' << endl ;

}

} ;

Form * Form :: skape form ( int type ) {

hvis ( type == 1 ) {
komme tilbake ny sirkel ( ) ;
} ellers hvis ( type == 2 ) {
komme tilbake nytt rektangel ( ) ;
} ellers {
komme tilbake nullptr ;
}
}


int hoved- ( ) {

Form * sirkel = Form :: skape form ( 1 ) ;

sirkel -> tegne ( ) ;

Form * rektangel = Form :: skape form ( 2 ) ;

rektangel -> tegne ( ) ;

komme tilbake 0 ;

}

I dette eksemplet har vi en formklasse med to avledede klasser: Sirkel og rektangel. Shape-klassen har en ren virtuell funksjon draw(), som implementeres av de avledede klassene. Shape-klassen har også en statisk funksjon createShape(int type), som fungerer som en fabrikkmetode for å lage forekomster av de avledede klassene basert på den angitte typen. Draw()-funksjonen kalles på de opprettede objektene for å demonstrere deres spesifikke oppførsel.

  Et bilde som inneholder tekst, font, skjermbilde Beskrivelse genereres automatisk

Konklusjon

Factory Pattern er et kreativt designmønster i C++ som gjør det mulig å lage objekter uten eksplisitt å kjenne objektets klasse. Det gir et forenklet grensesnitt for å lage objekter ved å skjule den komplekse opprettelseslogikken bak en fabrikkklasse. Dette gjøres ved å definere et felles grensesnitt for å lage objekter, hvor den spesifikke klassen til objektet bestemmes ved kjøring. Les mer om fabrikkmønstre i denne artikkelen.