シングルトンパターンで、インスタンスを1回だけ作るソースコードを見ましたが違和感があります。
例えば下記のようなクラスがあります。
class Sample { private static instance: Sample; static getInstance() { if(! Sample.instance) { Sample.instance = new Sample(); } return Sample.instance; } }
2回インスタンスを生成しようとすると、1回目のみ新しくインスタンスを生成します。
// 最初は新しくインスタンスを作る const sample1 = Sample.getInstance() // 2回目はインスタンスを作らない const sample2 = Sample.getInstance()
ソースの流れからSample
クラス自体を上書きしているのは分かります。
上書きしているので、2回目でもクラスを呼び出したら上書きされた状態なんだろうなと推測できます。
ただ、クラス自体を上書き出来る事が理解できません。
そもそも、クラスは何処で情報を保持しているのでしょうか?
class Sample { private static instance: Sample; static getInstance() { if(! Sample.instance) { Sample.instance = new Sample(); <-- このSampleは何処で保持されているのか? } return Sample.instance; } }
よく、クラスをたい焼きの金型の話に例える事があります。
あくまで、クラスはテンプレートであって、それ自体にデータを持たないと思っていました。
そもそもこの考え方に間違いがあるのでしょうか?
最終的に「そう言うものだ」でも良いのですが、もしお分かりになる方がいらっしゃればご教示いただきたいです。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/19 16:24