目次
目的
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にすることで外部からアクセスできないようにする
- static変数にすることでどのクラスのインスタンスに限らず共通の変数になる
- コンストラクタをprivateにする
- privateにすることで外部からインスタンスできないようにする
- この時点でクラス内にある先ほどのstatic変数(Instance)のみがインスタンスを保持できる
- 外部からインスタンスを取得できるようにするためのstaticメソッド(GetInstance())を設ける
まとめ
重要なのは3点
- クラス自身でprivate static インスタンスを保持
- コンストラクタをprivateに
- 外部からアクセス、インスタンスを取得できるようにする