🐕

Singletonパターン学習

2023/06/02に公開

Singletonパターンとは、クラスのインスタンスが1つのみ存在することを証明するデザインパターン
システム全体で使う状態を保持する場合に使われることがあるとかないとか

class NotSingletonClass{
    // 何かしらの処理
}

const instance1 = new NotSingletonClass();
const instance2 = new NotSingletonClass();

// ちがうインスタンスのため false になる
console.log(instance1 === instance1);

Singletonにしてみる

class SingletonClass{
    private static instance: SingletonClass;

    private constructor(){
        // constructorをプライベートにする
    }

    public static getInstance(): SingletonClass{
        if(!SingletonClass.instance){
            SingletonClass.instance = new SingletonClass();
        }
        return SingletonClass.instance;
    }
}

// new でインスタンス生成できなくなる
// const instance1 = new SingletonClass();

const instance1 = SingletonClass.getInstance();
const instance2 = SingletonClass.getInstance();

// 同じインスタンスなので true になる
console.log(instance1 === instance2);

初回呼び出し時にインスタンスを生成してもよい

class SingletonClass{
    private static instance: SingletonClass = new SingletonClass();

    private constructor(){
        // constructorをプライベートにする
    }

    public static getInstance(): SingletonClass{
        return SingletonClass.instance;
    }
}

Discussion