Since factory methods can create objects of any type, such a replacement can be especially useful when a new instance of the containing class is not desired.
E.g., when the current class is extended and objects of subclasses should be created instead. Or when caching is introduced and existing objects should be returned.