PHP デザインパターン(Singletonパターン)

Singletonパターン

↓買ったので、JavaPHPに読み替えて勉強。そのメモ。

サンプルプログラム

<?php

class Singleton{
	private static $singleton;
	private function __construct(){
		echo "インスタンスを生成しました。";
	}
	
	static function getInstance(){
		if( !isset(Singleton::$singleton) ){
			Singleton::$singleton = new Singleton();
		}
		return Singleton::$singleton;
	}
}

$obj1 = Singleton::getInstance();
$obj2 = Singleton::getInstance();

if($obj1 === $obj2){
	echo "obj1とobj2は同じ。";
}else{
	echo "obj1とobj2は同じではない。";
}

$obj3 = new Singleton();//Singletonのコンストラクタはprivateなのでエラーとなる

?>

Singletonパターンを使うと

Singletonパターンを使うと、インスタンスが1つしかないということが保証される。
予期せず複数のインスタンスが存在してしまい、思いがけないバグの発生を防げる。