From CarFactoryvirtual Car* createCar() { return new Toyota(); } virtual Engine* createEngine() { return new ToyotaEngine(); } }; int main() { CarFactory* curFactory = NULL; Car* myCar = NULL; Engine* myEngine = NULL; ToyotaFactory toyotaFactory; FordFactory fordFactory; curFactory = &toyotaFactory; myCar = curFactory->getNewCar(); myCar->info(); myEngine = curFactory->getNewEngine(); myEngine->getPower(); delete myCar; delete myEngine; curFactory = &fordFactory; myCar = curFactory->getNewCar(); myCar->info(); myEngine = curFactory->getNewEngine(); myEngine->getPower(); delete myCar; delete myEngine; return 0; }
Строитель Назначение Отделяет конструирование сложного объекта от его представления, так что в результате одного и того же процесса конструирования могут получаться разные представления. Достоинства · позволяет изменять внутреннее представление продукта; · изолирует код, реализующий конструирование и представление; · дает более тонкий контроль над процессом конструирования. Применение · алгоритм создания сложного объекта не должен зависеть от того, из каких частей состоит объект и как они стыкуются между собой;
Пример
#include <iostream> #include <memory> #include <string> Product Class Pizza { private: Std::string dough; // тесто Std::string sauce; // соус
|