Gamyklos modelis C++

Gamyklos Modelis C



Gamyklos modelis yra būdas kurti objektus programinės įrangos kūrimo metu, nežinant konkrečių jų kūrimo detalių. Ji suteikia supaprastintą sąsają objektams kurti, slepiant sudėtingą kūrimo logiką už gamyklos klasės. Jis priklauso dizaino modelių, skirtų objektų kūrimo mechanizmams, kategorijai. Šiame straipsnyje aprašomi gamykliniai C++ modeliai.

Įvadas į gamyklos modelį

Projektavimo modelis yra pasikartojančių programinės įrangos projektavimo problemų sprendimo būdas. Gamyklos raštas yra vienas iš dizaino modelių, padedančių kurti objektus lanksčiai ir atsietai.

Gamyklos modelis yra C++ kūrimo modelis, leidžiantis sukurti objektą aiškiai nežinant objekto klasės. Tai suteikia galimybę sudėti sudėtingų objektų kūrimo logiką atskiroje gamyklos klasėje. Tai atliekama apibrėžiant bendrą objektų kūrimo sąsają, kurioje vykdymo metu nustatoma konkreti objekto klasė.







Užuot kurę objektą tiesiogiai, naudojame gamyklinį metodą, kad pateiktume norimo objekto egzempliorių. Tokiu būdu galime paslėpti sudėtingus žingsnius, susijusius su objekto kūrimu, ir palengvinti objekto keitimą ar modifikavimą ateityje.



Kodėl verta naudoti gamyklinį modelį?

Yra keletas priežasčių, kodėl galbūt norėsite naudoti gamyklinį modelį. Viena iš priežasčių yra ta, kad ji leidžia atsieti kodą nuo konkrečių klasių. Naudodami gamyklinį metodą, galime lengvai pakeisti vieną klasę kita, nekeisdami jokio kito kodo ir padaryti jį efektyvesnį.



Kita priežastis, kodėl verta naudoti gamyklinį modelį, yra ta, kad dėl to kodas gali būti testuojamas. Gamykliniai modeliai leidžia išbandyti kodą kuriant netikrus objektus.





Štai keletas priežasčių, kodėl gamyklinis modelis naudojamas C++:

  • Factory Method modelis naudojamas, kai klasė iš anksto nežino, kokius objektus jai reikia sukurti.
  • Šablonas naudojamas, kai klasė remiasi savo poklasiais, kad nurodytų sukurtus objektus.
  • Tai naudinga, kai norite įterpti sudėtingo objekto kūrimo logiką vienoje vietoje.

C++ gamyklinio modelio pavyzdys

C++ programoje gamyklinį modelį galime įgyvendinti apibrėždami abstrakčią bazinę klasę virtualiu gamyklos metodu. Šis metodas turėtų grąžinti žymeklį į norimą klasės egzempliorių. Po to iš šios pagrindinės klasės galime išvesti konkrečias klases ir nepaisyti gamyklinio metodo, kad būtų grąžintas atitinkamos klasės egzempliorius.



Štai pavyzdys, kaip galime naudoti šį gamyklos modelio įgyvendinimą:

#include

naudojant vardų sritį std ;

klasė Forma {

viešas :

virtualus tuštuma piešti ( ) = 0 ;

statinis Figūra * sukurtiShape ( tarpt tipo ) ;

} ;

klasės ratas : viešoji forma {

viešas :

tuštuma piešti ( ) {

cout << 'Brėžti apskritimą'. << endl ;

}

} ;

klasės stačiakampis : viešoji forma {

viešas :

tuštuma piešti ( ) {

cout << 'Stačiakampio piešimas'. << endl ;

}

} ;

Figūra * Figūra :: sukurtiShape ( tarpt tipo ) {

jeigu ( tipo == 1 ) {
grąžinti naujas ratas ( ) ;
} Kitas jeigu ( tipo == 2 ) {
grąžinti naujas stačiakampis ( ) ;
} Kitas {
grąžinti nullptr ;
}
}


tarpt pagrindinis ( ) {

Figūra * ratas = Figūra :: sukurtiShape ( 1 ) ;

ratas -> piešti ( ) ;

Figūra * stačiakampis = Figūra :: sukurtiShape ( 2 ) ;

stačiakampis -> piešti ( ) ;

grąžinti 0 ;

}

Šiame pavyzdyje turime Shape klasę su dviem išvestinėmis klasėmis: apskritimu ir stačiakampiu. Shape klasė turi gryną virtualią funkciją draw(), kurią įgyvendina išvestinės klasės. Shape klasė taip pat turi statinę funkciją createShape(int type), kuri veikia kaip gamyklinis metodas, skirtas sukurti išvestinių klasių egzempliorius pagal nurodytą tipą. Funkcija draw() iškviečiama sukurtiems objektams, kad parodytų savo specifinį elgesį.

  Automatiškai sugeneruotas paveikslėlis su tekstu, šriftu, ekrano kopija Aprašymas

Išvada

Gamyklos modelis yra C++ kūrimo modelis, leidžiantis sukurti objektą aiškiai nežinant objekto klasės. Ji suteikia supaprastintą sąsają objektams kurti, slepiant sudėtingą kūrimo logiką už gamyklos klasės. Tai atliekama apibrėžiant bendrą objektų kūrimo sąsają, kurioje vykdymo metu nustatoma konkreti objekto klasė. Skaitykite daugiau apie gamyklinius modelius šiame straipsnyje.