Singletonクラス設計

Got my homework back...Got my homework back… / scottfeldstein

 

いくつか落とし穴がありそうだったのでメモしておく。
参考:
http://www.atmarkit.co.jp/fjava/javatips/075java007.html
http://www.ibm.com/developerworks/java/library/j-dcl/index.html

@ITによると、

Singletonパターンのポイントは、「コンストラクタをprivateにしてしまう」ことです。そして、唯一のインスタンスをprivateなstatic変数として保持しておくのです。こうすることで、そのクラスがJava仮想マシンへロードされたときに、一度だけインスタンスが生成されます。そして、これ以後、インスタンスの生成は構造上不可能になります。インスタンスの取得には、専用のstaticメソッドを用意します。

とのことだが、この場合、コンストラクタに動的な引数を与えることができない。
*具体的には、AndroidのContextをコンストラクタに渡したいケースとか

となると、GoFパターンをベースにすることになるのだが、マルチスレッド時に問題があるらしい。結局のところ、Synchronizedを使ってしまうのが手っ取り早い。当然、パフォーマンスが問題になるようなケースでは使えないが。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です