単一のインスタンスを返すシングルトンクラスの実装をいろいろ検討してみました。
function SingletonClass() { } SingletonClass.getInstance = function() { if (!SingletonClass.instance) { SingletonClass.instance = new SingletonClass(); } return SingletonClass.instance; };
結局こんな形に落ち着いています。
getInstanceというクラスメソッドを叩いてインスタンスを生成する想定です。
SingletonClass.getInstance() === SingletonClass.getInstance()
問題点
- new で単一ではないインスタンスをつくれてしまう
- インスタンスがグローバルからアクセスできてしまう
即時実行関数で包んだり、モジュールパターンみたいすれば解決できるような気もするのですが、
あんまり困ってないので一旦これで良いのではないかと思っています。
【追記】
問題点を修正したシングルトンクラスを考えました。