PHPで学ぶデザインパターン - Singleton ~いくつ作るかを制限~

Singleton パターンとは?

インスタンス生成のコストを制御するために、インスタンスが1つしかないことを保証するパターンです。

構造

SingletonClass

priavateのコンストラクタとインスタンスを1つだけ返すstaticメソッドと自分自身のインスタンスを保持するためのstatic変数を用意するだけです。

メリット

インスタンスへのアクセスを制御できる

Singletonパターンが保持する自分自身へのアクセスをprivateに制限しているためクライアント側のコードからのアクセスを制御することができます。

インスタンス数を変更することができる

生成されるインスタンスの数を2つ以上に変更することも可能です。

デメリット

  • テスタビリティが下がる
  • 実装後にインスタンスの制御数の変更が必要になると柔軟に対応しづらい

使いドコロ

実装例(※githubにリポジトリあります。)

まとめ

  • インスタンス生成手段をprivateにして外部からのアクセス手段を制限する
  • インスタンス生成回数の制御はstaticメソッドで行う

関連キーワード

  • カプセル化