デザインパターンの1つである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