Фабричный метод (Factory Method)
это паттерн, который определяет интерфейс для создания объектов
некоторого класса, но непосредственное решение о том, объект какого класса создавать происходит в подклассах.
Когда надо применять паттерн
Когда заранее неизвестно, объекты каких типов необходимо создавать
Когда система должна быть независимой от процесса создания новых объектов и расширяемой: в нее можно легко вводить новые классы, объекты которых система должна создавать.
Когда создание новых объектов необходимо делегировать из базового класса классам наследникам