何时以及如何使用构造函数
Foo bar = new Foo();
And when and how should we use getInstance() (static factory methods)
Foo bar = Foo.getInstance();
What is the difference between these two? I have always used a constructor, but when should I use getInstance() instead?