Насколько я понимаю, преимущество фабрики состоит в том, что вы можете попросить ее создать объект, не зная ничего, кроме магического числа, идентифицирующего класс объекта.
Это реальное преимущество в архитектуре плагинов, где вы хотите написать код, который может использовать объекты, разработанные задолго до или полностью отдельно от кода, который их использует.
Но если весь код, который использует объект, находится в том же двоичном файле, что и сам объект, и нет необходимости в отдельной компиляции, в фабрике нет реального преимущества, кроме как в формальном / концептуальном разделении реализации от использования.