Apstraktna fabrika (projektni uzorak)
Apstraktna fabrika je objektno-orijentisani projektni uzorak. Svrha apstraktne fabrike je da pruži zajednički interfejs za grupu sličnih objekta, bez pravljenja konkretnih klasa. Klijent "ne vidi" konkretne klase proizvoda, već ga interesuje samo konkretan rezultat. [1]
Učesnici uredi
Apstraktna fabrika uredi
Sadrži čiste virtuelne funkcije(metode) za kreiranje svih konkretnih proizvoda.
Konkretna fabrika uredi
Nasleđuje apstraktnu fabriku(interfejs) i implementira metode za kreiranje konkretnih proizvoda. Mogu da postoje više različitih konkretnih fabrika.
Apstraktni proizvod uredi
Deklariše interfejs za određeni tip proizvoda.
Konkretni proizvod uredi
Nasleđuje i implementira interfejs apstraktnog proizvoda i definiše proizvod koji će biti kreiran pomoću odgovarajuće fabrike. [2]
Primeri uredi
C++ uredi
#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;
}
Reference uredi
- ^ ETF Apstraktna fabrika (PDF). str. 2,3,5 i 6 http://rti.etf.bg.ac.rs/rti/ir4ps/predavanja/Projektni%20uzorci/16%20Apstraktna%20fabrika.pdf. Pristupljeno 21. april 2017. Nedostaje ili je prazan parametar
|title=
(pomoć) - ^ Apstraktna fabrika-učesnici (PDF). str. 7 i 8 http://rti.etf.bg.ac.rs/rti/ir4ps/predavanja/Projektni%20uzorci/16%20Apstraktna%20fabrika.pdf. Pristupljeno 21. april 2017. Nedostaje ili je prazan parametar
|title=
(pomoć)