BookmarkLINESingletonパターンは、インスタンスの生成制御に関するデザインパターン手法の1つで、インスタンスが1つしかない事を保証します。この、「インスタンスが1つしかない事を保証する」とはどういう事なのか。Singletonパターンが用いられるのは以下のような状況の時です。そのオブジェクト(クラス)を毎回インスタンス化したとして、複製されたそれらのどれかの状態や値が変更された際に、毎回必ず全てのインスタンスの保持する状態が同一でなければならない状況の時。状態の同期を実装するくらいなら、初めからそのインスタンスが単一であった方が結局シンプルである。インスタンスの生成自体にも負荷がかかるので、1つで済む役割のオブジェクトならそもそも1つだけ存在できれば良い。そのオブジェクトが保有(もしくはロード)する何等かのデータの量がとてつもなく多い場合、いくつもインスタンスが生成されるとパフォーマンスの低下・障害に通じる。なんだかんだ言ってもあれこれすればインスタンスを1つに限定しなくてもなんとかなる場合もあったりしますが、結局は無駄に複雑化させる事なく、極力シンプルにアプリケーションを構築する為には、Singletonパターンを採用するに至ります。した「よからぬ状況」の回避を運用ではなく動作ロジックとして完全に単一である事を実現させる事で、そのインスタンスが1つのみである事を必ず保証し、運用どころか開発時点から事故を無くします。Singletonパターンのクラス図は以下のようになります。その名の通り1つのクラスのみ。実装例Singletonパターンを実装したコードは以下のようになります。}}上記のコードは最小構成です。実際にはシングルトンを実現した上で、必要なふるまいを定義していきます。いう事で、このクラスが提供している機能は唯一「IDを返す」という事になります。上記のように動的に生成されたIDが、必ず同じ値を返す為には、やはり単一インスタンス、つまりはシングルトンである必要があります。新しいインスタンスを生成すると新しいIDが生成されてしまうからです。time());}コンストラクタのアクセス修飾子をprivateにする事で、new演算子を用いて新たなインスタンスを作成できなくさせています。このオブジェクトにアクセスするには、そのオブジェエクトが持つ提供メソッドから取得する必要があります。それがgetInstance()メソッドです。self::$instance;}インスタンスが生成されていなければ自身の生成を行い、1度生成されてからはそれのみを返却します。