Похоже на то, только очень куцая реализация. Суть фабричного метода в том, чтобы была возможность переопредеить его в наследниках, типа BearFactory::createAnimal создает Bear ( который имплементит интерфейс Animal), DragonflyFactory::createAnimal создает Dragonfly ( который имплементит интерфейс Animal). Конкретный создатель при создании соответствующего ему класса, который имплементит интерфейс Animal может реализовать свою кастомную логику в процессе создания экземпляра класса - у тебя здесь все по одному сценарию происходит, да еще и с привязкой к строковой константе - имени класса - то есть чтобы создать какой то экземпляр Animal я должен обязательно знать его имя - не надо так.