Static Factory Methods v.s. Constructor
Advantages to use Static Factory Methods
1. More descriptive - the name of the factory methods can explain more than a constructor
e.g. v.s.
2. Can have multiple static factory methods for separate purpose
3. Static factory methods can return existing instance instead of generate a new one everytime when it's invoked
- Good for immutable, singleton, uninstantiable
- Improve performance
e.g.
4. Static factory method can return any subtype of their return type
- an API can return objects without making their classes public (can only make the interface public)
5. Static factory method can help guess type parameter
e.g. Map<String, List<String>> m = HashMap.newInstance();
Disadvantages when only provide static factory method
1. Classes without Public/Protected constructor cannot be subclassed.
2. Not readily distinguishable from other static methods