staticなファクトリメソッドを提供し、constructorの代わりに使用することで、インスタンス生成に関するコードをより分かりやすくできる。
コンストラクタにパラメータが多い場合は、ビルダーパターンを利用する方が便利である。
privateのコンストラクタまたはenum型でシングルトン特性を強制する。