Static factory methods that return instances of a type.
Determine implementation at run-time.
Using a factory to impose uniqueness.
Using a factory to implement the singleton design pattern.
Advantages of static factory methods.
Disadvantes of static factory methods.