do not need to create a new object upon each invocation - objects can be
cached and reused, if necessary.

can return a subtype of their return type - in particular, can return
an object whose implementation class is unknown to the caller. This
is a very valuable and widely used feature in many frameworks which use
interfaces as the return type of static factory methods.

Common names for factory methods include getInstance and valueOf.
These names are not mandatory - choose whatever makes sense for each case.