The normal way for a class to allow a client to obtain an instance is to provide a public contructor. Another way to do that is providing a public static factory method, whi
This chapter from the book Effective Java explains it well: Consider Static Factory instead of Constructors. It explains all the pros and cons for both of them in the best way you can understand.
Just to quote the advantages and disadvantages from the book:
Advantages:
Disadvantages:
The main disadvantage of providing only static factory methods is that classes without public or protected constructors cannot be subclassed
A second disadvantage of static factory methods is that they are not readily distinguishable from other static methods.
You can study them in more detail in the link I gave.