A constructor always returns a brand-new instance of its exact class, with a name fixed to the class. A factory method is a regular (often static) method that creates objects — giving you freedom over naming, which subtype to return, and whether to create a new object at all.
