Апстрактна фабрика (пројектни узорак)
Апстрактна фабрика је објектно-оријентисани пројектни узорак. Сврха апстрактне фабрике је да пружи заједнички интерфејс за групу сличних објекта, без прављења конкретних класа. Клијент "не види" конкретне класе производа, већ га интересује само конкретан резултат.[1]
Учесници
уредиАпстрактна фабрика
уредиСадржи чисте виртуелне функције(методе) за креирање свих конкретних производа.
Конкретна фабрика
уредиНаслеђује апстрактну фабрику(интерфејс) и имплементира методе за креирање конкретних производа. Могу да постоје више различитих конкретних фабрика.
Апстрактни производ
уредиДекларише интерфејс за одређени тип производа.
Конкретни производ
уредиНаслеђује и имплементира интерфејс апстрактног производа и дефинише производ који ће бити креиран помоћу одговарајуће фабрике. [2]
Примери
уредиC++
уреди#include <iostream>
class ApstraktniProizvod{
public:
virtual void use() = 0;
};
class KonkretniProizvodA : public ApstraktniProizvod{
public:
void use() {
std::cout << "Koristim KonkretniProizvodA." << std::endl;
}
};
class KonkretniProizvodB : public ApstraktniProizvod{
public:
void use() {
std::cout << "Koristrim KonkretniProizvodB." << std::endl;
}
};
class ApstraktnaFabrika{
public:
virtual ApstraktniProizvod* getProizvod() = 0;
};
class KonkretnaFabrikaA : public ApstraktnaFabrika{
public:
ApstraktniProizvod* getProizvod() {
return new KonkretniProizvodA;
}
};
class KonkretnaFabrikaB : public ApstraktnaFabrika{
public:
ApstraktniProizvod* getProizvod() {
return new KonkretniProizvodB;
}
};
int main() {
ApstraktnaFabrika* fa = new KonkretnaFabrikaA();
ApstraktnaFabrika* fb = new KonkretnaFabrikaB();
ApstraktniProizvod* pa = fa->getProizvod();
ApstraktniProizvod* pb = fb->getProizvod();
pa->use();
pb->use();
return 0;
}
Референце
уреди- ^ ЕТФ Апстрактна фабрика (PDF). стр. 2,3,5 и 6 http://rti.etf.bg.ac.rs/rti/ir4ps/predavanja/Projektni%20uzorci/16%20Apstraktna%20fabrika.pdf. Приступљено 21. април 2017. Недостаје или је празан параметар
|title=
(помоћ) - ^ Апстрактна фабрика-учесници (PDF). стр. 7 и 8 http://rti.etf.bg.ac.rs/rti/ir4ps/predavanja/Projektni%20uzorci/16%20Apstraktna%20fabrika.pdf. Приступљено 21. април 2017. Недостаје или је празан параметар
|title=
(помоћ)