Конструктор всегда возвращает совершенно новый экземпляр его точного класса, с именем, привязанным к классу. Фабричный метод — это обычный (часто статический) метод, который создает объекты — давая вам свободу над названием, каким подтипом вернуться и будет ли вообще создан новый объект.
