Feb
15
2009

Dirty Singleton Pattern

Für die Programmierung meines MVC-Framework habe ich mich mal mit dem Thema Entwurfsmuster beschäftigt.
Für den Aufbau einer MySQL Datenbank Klasse habe ich mich nun dazu entschieden ein Singleton-Pattern einzusetzen. Jedoch ein solches welches mir dennoch erlaubt für jede Datenbank ein einzelnes Objekt zu erstellen. Ist zwar etwas dirty aber es erfüllt seinen Zweck ;-)

class senf_database_mysql{
	/**
	 * Returns instances
	 *
	 * @access public
	 * @return object
	 */
	public static function returnIns($database){
		if (!isset(self::$ins[$database])){
			self::$ins[$database] = new senf_database_mysql($database);
		}
		return self::$ins[$database];
	}
}

Mit dem Aufruf der statischen Funktion senf_database_mysql::returnIns(‘datenbank’) wird überprüft ob im array $ins[] bereit ein objekt zur entsprechenden Datenbank besteht. Ist das nicht der Fall so wird ein neues Objekt erstellt und in $ins[] abgelegt. Bei jedem weiteren Zugriff auf eine Datenbank, zu welcher bereits ein Objekt besteht, wir die bereits bestehende Instanz zurückgeliefert.

Written by admin in: PHP | Schlagwörter:, , ,

1 Kommentar »

  • Wenn du deiner Klasse jetzt noch folgende Zeilen hinzufügst, ist der Code gleich nicht mehr so “dirty”:

    private static $ins = array();
    private __construct(){}
    private __clone(){}

    Mit “private static $ins = array();” erzeugst du ein Array, in dem du deine Instanzen ablegst.

    Die Funktion “private __construct(){}” stellt sicher, dass von außen keine Instanz der Klasse erstellt werden kann. Zu guter letzt stellt die Funktion “private __clone(){}” sicher, dass auch keine Kopie einer bestehenden Instanz erzeugt werden kann.

    Mit diesen drei Zeilen sieht dein Code gleich deutlich hübscher aus. :-P

    Kommentar | 6. Mai 2009

RSS feed for comments on this post. TrackBack URL

Hinterlasse einen Kommentar

Sponsored by: Website Templates | Premium Wordpress Themes. Exchange Server