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

  1. ^ 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ć)
  2. ^ 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ć)