Фабричный метод
Factory Method
Назначение
Определяет интерфейс для создания объекта, но оставляет подклассам решение о том, какой класс инстанцировать.
Результаты
1. Фабричные методы избавляют проектировщика от необходимости встраивать в код зависящие от приложения классы. Код имеет дело только с интерфейсом класса Product, поэтому он может работать с любыми классами конкретных продуктов.
2. Паттерн может использоваться для соединения параллельных иерархий, например, основных и вспомогательных продуктов типа итераторов. С помощью фабричного метода локализуется знание о том, какие классы должны работать совместно.
Реализация
//
class Product {};
//
//
class Creator {
public:
virtual Product *CreateProduct()=0;
void Operation() {
Product *product=CreateProduct();
...
}
};
//
class Product1 : public Product {};
//
class Creator1 : public Creator {
public:
Product1 *CreateProduct() { return new Product1(); }
};