Singletonパターン(生成されるインスタンスが1つしかないことを保証するデザインパターン)をクラス図にまとめる

デザインパターン

デザインパターンの1つであるSingletonパターンについて自分なりにまとめてみました。

Singletonパターンのクラス図

Singletonパターンのクラス図

Singletonパターンの解説

Singletonパターンはシンプルで、1つのクラスのみでパターンが成立する。
ポイントはコンストラクタをprivateにするところ(四角い赤がprivateの意)。
こうすることで別のところからこのクラスをインスタンス化してオブジェクトを生成できなくなる。
では外部からどうやってこのオブジェクトを参照するかというと、getSingletonというpublicなメソッドを用意しておき、
そのメソッドが呼び出されたらSingletonの属性であるSingleton(クラス図ではinstanceという名前にしている)オブジェクトが返されるようにすることで、参照可能にしている。
こうすることで、このクラスのインスタンスが何度も生成されることがなくなる。

Singletonパターンをどういう場合に使うか

データベース接続処理のクラスなどでSingletonを使うことが多い印象。
1リクエストに対し複数回のDBアクセスが発生する場合に、都度接続オブジェクトを生成しないように、Singletonパターンを使うことがある。

SingletonパターンのPlantUMLの記述

文頭のSingletonパターンのクラス図をPlantUMLで書いたときのソースです。

@startuml Singleton
class Singleton{
  - {static} instance: Singleton
  - __construct()
  + {static} getSingleton(): Singleton
}
@enduml

参考サイトURL

5. Singleton パターン
PHPによるデザインパターン入門 – Singleton〜いくつ作るかを制限する