kazu22002の技術覚書

PHPer, Golang, AWS エンジニアの日々

デザインパターン勉強 Singletonパターン

GoFデザインパターンのSingletonパターンを勉強してみます。

Singletonパターン

クラスのインスタンスが一つだけに保証して作成したい場合に使うパターンです。

使い方

public class NotificationManager{
    private static $instance;
    private function __construct(){}
    public static function getInstance(){
        if( ! isset(self::$instance) ) {
            self::$instance = new NotificationManager();
        }

        return self::$instance;
    }
}

constructをprivateにすることで呼び出しできないようにし、getInstanceがpublicのstaticになっているため静的に呼び出すことができるようになっています。

雑記

singletonパターンはイメージしやすく、利用する機会が多いです。

使い方が理解しやすいため、見つけることも多いのかと思います。

laravelのappとかDBのインスタンスとかsingletonで一つに保証されています。

覚えておく必要があるパターンだと思っています。

phpではtraitを利用することで、簡単に実現できたりします。振る舞いとして設定できる感じです。

参考

www.techscore.com

qiita.com