Фабрички образац у Ц++

Fabricki Obrazac U C



Фацтори Паттерн је начин креирања објеката у развоју софтвера без потребе за познавањем специфичних детаља о томе како су креирани. Пружа поједностављен интерфејс за креирање објеката скривањем сложене логике креирања иза фабричке класе. Спада у категорију образаца дизајна који се баве механизмима креирања објеката. Овај чланак покрива фабричке обрасце у Ц++.

Увод у фабрички образац

Образац дизајна је метод решавања понављајућих проблема у дизајну софтвера. Фацтори Паттерн је један од образаца дизајна који помажу да се објекти креирају на флексибилан и одвојен начин.

Фацтори Паттерн је креациони образац дизајна у Ц++ који омогућава креирање објеката без експлицитног познавања класе објекта. Пружа начин за енкапсулацију сложене логике креирања објеката унутар посебне фабричке класе. Ово се ради дефинисањем заједничког интерфејса за креирање објеката, где се специфична класа објекта одређује у току извршавања.







Уместо да директно креирамо објекат, користимо фабрички метод да нам да инстанцу објекта који желимо. На овај начин можемо сакрити компликоване кораке који су укључени у креирање објекта и олакшати промену или модификацију објекта у будућности.



Зашто користити фабрички образац?

Постоји неколико разлога зашто бисмо можда желели да користимо фабрички образац. Један од разлога је што омогућава раздвајање кода од одређених класа. Користећи фабричку методу, можемо лако да заменимо једну класу за другу без потребе да мењамо било који други код и учинимо га ефикаснијим.



Други разлог за коришћење фабричког узорка је тај што може учинити код пробљивијим. Фабрички обрасци нам омогућавају да тестирамо код креирањем лажних објеката.





Ево још неких разлога зашто се фабрички образац користи у Ц++:

  • Образац Фацтори Метход се користи када класа не зна унапред које објекте треба да креира.
  • Образац се користи када се класа ослања на своје подкласе да би специфицирала објекте које креира.
  • Корисно је када желите да обједините логику за креирање сложеног објекта на једном месту.

Пример фабричког узорка у Ц++

У Ц++, можемо имплементирати фабрички образац дефинисањем апстрактне основне класе помоћу виртуелног фабричког метода. Овај метод треба да врати показивач на жељену инстанцу класе. Након тога, можемо да изведемо конкретне класе из ове основне класе и надјачамо фабрички метод да бисмо вратили инстанцу одговарајуће класе.



Ево примера како бисмо могли да користимо ову имплементацију фабричког обрасца:

#инцлуде <иостреам>

користећи простор имена стд ;

класа Облик {

јавности :

виртуелни празнина цртати ( ) = 0 ;

статичне Облик * цреатеСхапе ( инт тип ) ;

} ;

разред Круг : јавни Облик {

јавности :

празнина цртати ( ) {

цоут << 'Цртање круга.' << ендл ;

}

} ;

класа Правоугаоник : јавни Облик {

јавности :

празнина цртати ( ) {

цоут << 'Цртање правоугаоника.' << ендл ;

}

} ;

Облик * Облик :: цреатеСхапе ( инт тип ) {

ако ( тип == 1 ) {
повратак нови Круг ( ) ;
} друго ако ( тип == 2 ) {
повратак нови правоугаоник ( ) ;
} друго {
повратак нуллптр ;
}
}


инт главни ( ) {

Облик * круг = Облик :: цреатеСхапе ( 1 ) ;

круг -> цртати ( ) ;

Облик * правоугаоник = Облик :: цреатеСхапе ( 2 ) ;

правоугаоник -> цртати ( ) ;

повратак 0 ;

}

У овом примеру имамо класу Схапе са две изведене класе: Круг и Правоугаоник. Класа Схапе има чисту виртуелну функцију драв(), коју имплементирају изведене класе. Класа Схапе такође има статичку функцију цреатеСхапе(инт типе), која делује као фабрички метод за креирање инстанци изведених класа на основу наведеног типа. Функција драв() се позива на креираним објектима да демонстрира њихово специфично понашање.

  Аутоматски генерисана слика која садржи текст, фонт, снимак екрана

Закључак

Фацтори Паттерн је креациони образац дизајна у Ц++ који омогућава креирање објеката без експлицитног познавања класе објекта. Пружа поједностављен интерфејс за креирање објеката скривањем сложене логике креирања иза фабричке класе. Ово се ради дефинисањем заједничког интерфејса за креирање објеката, где се специфична класа објекта одређује у току извршавања. Прочитајте више о фабричким обрасцима у овом чланку.