Was genau ist eigentlich ein Design Pattern? Ein Design Pattern soll eine Art Schablone sein um Probleme, die im Programmieralltag auftreten, lösen zu können. Es gibt immer wieder Herausforderungen denen wir bei der Programmierung gegenüberstehen … und natürlich sind wir in den meisten Fällen nicht die ersten die eine Lösung für genau dieses Problem suchen. Aus einigen dieser Lösungen sind dann Schablonen entstanden, die eben Design Patterns genannt werden und die uns helfen aus den Fehlern anderer zu lernen.
Heute möchte ich ein sehr bekanntes Pattern vorstellen: Singleton
Singleton gehört zu der Kategorie der Erzeugungsmuster (engl. Creational Pattern) und soll verhindern dass von einer Klasse mehr als ein Objekt erzeugt wird. Nützlich und wohl am weitesten verbreitet ist es, wenn es darum geht eine Datenbankverbindung aufzubauen. Wozu sollte man denn während einem Seitenaufbau eine Datenbankverbindung immer wieder aufbauen und schließen? Also möchten wir die Verbindung einmal öffnen und immer wieder die gleiche Verbindung weiter verwenden. Hier direkt mal der Code für eine einfache Umsetzung:
<?php
require_once("DB.php");
final class DatabaseConnection {
private $_handle = null;
private static $db = null;
// Diese statische Methode gibt die Instanz zurueck.
public static function getInstance() {
if ( self::$db == null )
self::$db = new DatabaseConnection();
return self::$db;
}
// Konstruktor private, damit die Klasse nur aus sich selbst heraus instanziiert werden kann.
private function __construct() {
$dsn = 'mysql://root:password@localhost/photos';
$this->_handle =& DB::Connect( $dsn, array() );
}
// Klonen per 'clone()' von außen verbieten.
private function __clone() {}
}
$dbConn = DatabaseConnection::getInstance();
?>
