【しんぐるとん】
シングルトン とは?
💡 「絶対に1個しかない」インスタンスを保証する番人
📌 このページのポイント
シングルトンって何のためにあるの?
アプリ全体で「同じ1つ」のものを使いたいときのためだよ。設定ファイルの内容を管理するクラスが2つあったら、片方の変更がもう片方に反映されない問題が起きる。シングルトンにすれば全員が同じオブジェクトを使うからズレが起きない。
どうやって1個しか作れないようにするの?
なんでアンチパターンって言われるの?
グローバル変数と同じ問題が起きやすいから。どこからでもアクセスでき、誰でも状態を変えられる。テストのとき別の実装に差し替えにくい。「シングルトンに依存している関数」を単体でテストしたくても、本物のシングルトンがくっついてくる。
じゃあどうすればいいの?
まとめ:ざっくりこれだけ覚えればOK!
シングルトンって出てきたら「アプリ全体で1個だけのインスタンス」と思えばだいたいOK!
📖 おまけ:英語の意味
「Singleton」 = 単独のもの・1つだけの存在
💬 「Single(1つの)」+「-ton(存在)」。トランプのソリティア(Solitaire)と同語根。唯一の存在というニュアンス