In addition to well known constructors, it’s sometimes convenient to replace them (or just hide) with static factory method. As we actually could have for our type more static methods, the problem appears how to distinguish our instance creation methods from other ones?
Actually, I found very nice approach on that in Effective Java book, which is as below:
valueOf or of - Returns an instance that has, loosely speaking, the same value as its parameters. Such static factories are effectively type-conversion methods.
getInstance - Returns an instance which is described by the parameters but cannot be said to have the same value. In the case of a singleton, getInstance takes no parameters and returns the sole instance.
newInstance— Like getInstance, except that newInstance guarantees that each instance returned is distinct from all others.
getType and newType – Like getInstance and newInstance, but used when the factory method is in a different class. Type indicates the type of object returned by the factory method.