こんにちは。
いろいろなテキストやネットのコードを見ててインスタンスを生成するときに、newを使うときとgetInstance()を使うときが出てきて、扱いの違いがわからなかったので調べてみた。
new演算子
あるクラスから実体のあるインスタンスオブジェクトを取得する
getInstance()メソッド
あるクラスから実体のあるインスタンスオブジェクトを取得する
(🔰)一緒に見える
(🔰)でもgetInstance()はSingletonパターンというものであることがわかった!
getInstance()はSingletonパターン
Singletonパターンとは
デザインパターンの一つ。
「あるクラスのインスタンスが常にたった1つしか存在していない」
という状態を実現したいときに使用される。
Singletonのメリット
複数のインスタンスを作られると困る場面では
必ず一つしか作れないようにできる。
Singletonのデメリット
どこのクラスからでも常に同じインスタンスを使用することになるため、
グローバル変数と同じような扱いで、どこからでも変更ができたり、
クラス同士の結合度が高くなってしまう。
まとめ
Singletonパターンを採用しているクラスのインスタンスを取得するときには
getInstance()メソッドを使用しよう
さいごに
new演算子は何個も中身の違うインスタンスを取得できるクラスに対して使用し、
getInstance()メソッドはたった一つのインスタンスしか取得できない
Singletonパターンのクラスに対して使用する。
javaAPIの中にもnewできないクラスがあるため、知っておくことが必要。
(ex..Calendarクラス)