Фабрика не для того чтобы не копипастить классы с одинаковым behavior. Это обертка над конструктором, которая требуется когда нужно вычислять (или брать из IO потоков) данные для инициализации рекорда (например можно создать объект Image с пустым содержимым с помощью конструктора, можно создать его через from_file а можно сгенерить его через from_chaos - последние две и будут фабриками)