1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Singletonの仕組みについて

Last updated at Posted at 2024-10-01

目次

目的
Singletonの実装
Singletonの仕組み
まとめ
参考

目的

自分自身の備忘録のためSingletonというデザインパターンについて記録しておく

Singletonとは

Singletonとは、1つのクラスに対して1つのインスタンスしかされないことを保証するデザインパターンのこと

Singletonの実装

Singleton.cs
class Singleton
{
    // static(静的)なインスタンスを自身のクラス内で変数として持つ(static変数なのでインスタンス生成に関係なく作られる)    
    // またprivateを使用して外部からアクセスできないようにする
    private static Singleton Instance = new Singleton();

    // コンストラクタをprivateにし外部からアクセスできないようにする
    private Singleton()
    {
         // コンストラクタ
    }

    // このクラスのインスタンスを取得するためのstaticメソッド(staticメソッドはインスタンスの状態に依存せず利用できるメソッド。インスタンスが生成されてなくても利用可能)
    public static Singleton GetInstance()
    {
        return Instance;
    }
    
}

Singletonの仕組み

  • クラス自身でインスタンスをstatic変数で保持
    • static変数にすることでどのクラスのインスタンスに限らず共通の変数になる
      • static変数は最初にアクセスしたタイミングで生成される
    • また、privateにすることで外部からアクセスできないようにする
  • コンストラクタをprivateにする
    • privateにすることで外部からインスタンスできないようにする
    • この時点でクラス内にある先ほどのstatic変数(Instance)のみがインスタンスを保持できる
  • 外部からインスタンスを取得できるようにするためのstaticメソッド(GetInstance())を設ける

まとめ

重要なのは3点

  • クラス自身でprivate static インスタンスを保持
  • コンストラクタをprivateに
  • 外部からアクセス、インスタンスを取得できるようにする

参考

Singletonの仕組み
static変数、staticメソッドとは

1
0
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?