Mailinglisten-Archive |
On Tue 14 Sep 2004 23:21 +0200, Johannes Schäfer wrote: > Timo Schmidt aeusserte am 14.09.2004 23:02 folgendes: > > > On Tue 14 Sep 2004 22:56 +0200, Johannes Schäfer wrote: > > > > > ich suche ein entwurfsmuster welches immer nur eine > > > instanz von einem objekt mit bestimmten eigenschaften > > > liefert. > > > > Singleton Pattern. > > singleton macht mir doch nur eine instanz von einer klasse? Das liefert Dir doch ein Objekt der Klasse, welches mit dem Operator »new« über eine Variable angesprochen werden kann. Mit dem Singleton Muster hast Du die Möglichkeit anhand Deiner Kriterien genau ein Objekt dieser Klasse zu erhalten. Wenn Dir eine statische Klasse ausreicht, dann erzeuge kein Objekt dieser Klasse, sondern nutze die Funktionen der Klasse direkt mit dem »::« Operator. > > > also die bestimmende eigenschaft ist in diesem fall die > > > $id. > > > > Vorschlag: Serialisiere die übergebenen Paramter, bilde > > einen MD5-Hash und speichere das erzeugte Ojekt unter > > diesem Hash, z.B. in einem Array mit entsprechenden > > Index. Sollten nun die selben Paramter übergeben werden, > > kannst Du mit dem Hash-Wert überprüfen, ob es schon ein > > Objekt zu diesen Werten gibt. > > ja, das war auch schon meine idee. ich hoffe halt nur das > es vielleicht eine bessere gibt. Anhand welcher Kriterien Du die Parameter und damit die Objekte am besten unterscheiden kannst, musst Du schon selber wissen. Wenn es lediglich $id sein soll, dann mach doch einfach folgendes: class foobar { private $_inst = array(); public function get_instance($id, $classname) { if (isset($this->_inst[$id]) && is_object($this->_inst[$id])) return $this->_inst[$id]; $this->_inst[$id] = new $classname($id); return $this->_inst[$id]; } } $singl = new foobar(); $obj = $singl->get_instance(10, "was_auch_immer"); -Timo
php::bar PHP Wiki - Listenarchive