Фабричный метод - это основание для работы абстрактной фабрики и строителя. Предположим, наша игра должна производить территорию.
class CGame
{
public:
virtual CTerrain* createTerrain();
//....
}
class CTerrain
{
//....
}
Оба класса абстрактные, потому что игра может вестись за людей или гномов, и соответственно территории могут быть людские или гномьи, а просто игры и территории не бывает. Игра должна породить территорию в зависимости от того, кто она (игра) на самом деле.
class CHumanTerrain : public CTerrain
{
//....
}
class CHumanGame : public CGame
{
CTerrain* createTerrain () { return new CHumanTerrain; };
}
Производящий метод createTerrain и есть фабричный метод. Структура паттерна такова: класс CCreator желает получать
CProduct, но предоставляет своим конкретным потомкам право решать, какой конкретный продукт производить.
