Singleton
Das Singleton-Pattern stellt sicher, dass es von jeder Klasse nur 1 Objekt gibt. Wichtig dabei:
- Der Konstruktor muss privat sein.
- __clone() muss unterbunden werden.
- Die Singleton-Methode muss überprüfen, ob es das Objekt schon gibt.
Im Folgenden stelle ich mal zwei Varianten vor:
class Ball {
public $farbe = '';
static private $instance = null;
private function __construct(){}
static public function getInstance() {
if (null === self::$instance) {
self::$instance = new self;
}
return self::$instance;
}
private function __clone(){}
}
$ball = Ball::getInstance();
$ball->farbe = 'weiss';
$ball = Ball::getInstance();
echo $ball->farbe;
// weiss
class Ball {
public function __construct() {}
}
class Singleton
{
static private $instances = array();
static public function getInstance($className)
{
if (!isset(self::$instances[$className])) {
self::$instances[$className] = new $className();
return self::$instances[$className];
} else {
echo "Das Objekt ".$className." darf nur 1x erzeugt werden!";
}
}
}
$ball = Singleton::getInstance('Ball');
$ball = Singleton::getInstance('Ball');
// Das Objekt Ball darf nur 1x erzeugt werden!


Kommentare