Слайд 2
Слайд 3
Слайд 4
Слайд 5
Слайд 6
Слайд 7
Слайд 8
Слайд 9
Слайд 10
Слайд 11
Слайд 12
Слайд 13
Слайд 14
Слайд 15
Слайд 16
Слайд 17
class Product{
public:
virtual string getName() = 0;
virtual ~Product() {}
};
Слайд 18
class ConcreteProductA: public Product{
public:
string getName() {return "ConcreteProductA";}
};
class ConcreteProductB: public Product{
public:
string getName()
{return "ConcreteProductB";}
};
Слайд 19
class Creator{
public:
virtual Product* factoryMethod() = 0;
};
class ConcreteCreatorA: public Creator{
public:
Product* factoryMethod()
{return new ConcreteProductA();}
};
class ConcreteCreatorB: public Creator{
public:
Product* factoryMethod() {return new ConcreteProductB();}
};
Слайд 20
int main()
{
static const size_t count = 2;
ConcreteCreatorA CreatorA;
ConcreteCreatorB CreatorB;
//
Массив создателей
Creator*creators[count] = {&CreatorA, &CreatorB};
// Перебора создателей и создавать продукты
for(size_t i = 0; i Product* product=creators[i]->factoryMethod();
cout << product->getName() << endl;
delete product;
}
return 0;
}
Слайд 21
Схожие шаблоны и их отличия