Gyorspost következik.
Nagyon szeretem a singleton design patternt (erre van magyar kifejezés? “egyke tervsablon”?), mert nagyon könnyen összefoghatóak vele egy moduláris PHP rendszer egyes elemei. Olykor felmerül a szükség, hogy semi-singleton (”félegyke???”) osztályokat alkossunk. Mit értek ez alatt?
Olyan osztályokra gondolok, amelyekből bizonyos tulajdonságok alapján csak egy példányt engedünk kreálni, de ha ezek a tulajdonságok eltérnek, akkor lehet belőlük bármennyi. Például egy termékkel kapcsolatban végzett műveletekre használt osztály vagy egy vásárló tranzakcióit nyilvántartó és lebonyolító osztály.
Hogyan csináljunk semi-singleton osztályt? Nagyon egyszerű:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | class TermekMuveletek { private static $_singleton = array(); public $termekid; private function __construct($termekid) { $this->termekid=$termekid; } public static function Get($termekid) { if (is_null (self::$_singleton[$termekid])) { self::$_singleton[$termekid] = new TermekMuveletek($termekid); } return self::$_singleton[$termekid]; } } |
Ennyi az egész. Szebb lenne, ha termekid read-only lenne, de ez PHP-ból csak __set és __get használatával valósítható meg, ami jócskán lassít. Gyorspostunkat olvashatták.



2009. 06. 19.
A “Design Patterns: Elements of Reusable Object-Oriented Software” című könyv magyar fordítása szimplán “egykének” hívja a “singleton” tervezési mintát és tudtommal sulikban is egykének tanítják, már ahol teszik.
Mondjuk mint egynéhány egyéb kiskapus kiadványnál, itt is ki tudok azért akadni néhány fordítástól. pl. “elvont gyár” (abstract factory)…