質問: 自分がインスタンスというものを決まり文句としてしか理解できていないからなのですが、シングルトンの重要性があまりわかりません。 調べてみてもいまいちピンきませんでした、インスタンスがなぜ一つじゃないといけないのか,どのような場面でシングルトンを使うのか、どなたか教えて頂けないでしょうか。
回答: 例を示します。 1個しかない定義ファイルを読み込んで定義情報を保持するクラス Config を作ったとします。 シングルトン設計でない場合、Config を次のように使います。 ``` Config c = new Config(); // Config のコンストラクタで定義ファイルを読み込む String name = c.getName(); // 定義されている名前を取得 ``` 上記の使い方では、new 演算子を実行するたびに、Config のインスタンスが生成されます。 すると、定義ファイルが1個しかないにも関わらず、Config のインスタンスを生成するたびに、定義ファイルを読み込むことになります。 そこで、次のように Config クラスを改善します。 1. Config クラスのコンストラクタを public にしないように修正し、 外部プログラムで new 演算子でインスタンスを生成できなくする 2. Config クラスに getInstance() を追加し、 Config 内部で保持しているインスタンスを返す すると、プログラムでは次のような使い方になります。 ``` Config c = Config.getInstance(); // 生成済みの Config インスタンスを取得 String name = c.getName(); // 定義されている名前を取得 ``` この改善により、ただ1つのインスタンスを使いまわすようになります。 そうすれば、定義ファイルを読み込む回数も1回だけになります。 インスタンスを1個しか作らせたくない場合に、シングルトン設計をします。