Паттерн Factory Method

Когда применяется?

Определяет интерфейс для создания объектов класса, но при этом в подклассах решается непосредственно к какому классу будет относиться данный.

Применяется паттерн когда заранее неизвестно к какому типу объект будет относиться, когда базовый класс должен руководить процессом создания объектов классов-наследников и когда система должна быть гибко-расширяемой и в неё можно будет легко вводить новые классы.