[Java lista] Tervezési minták
bognár attila
attila at netalfa.hu
2008. Sze. 23., K, 16:07:01 CEST
> Azt garantalja, hogy az adott osztalynak csak egy peldanya van.
>
> Azt viszont sajnos nem garantalja, hogy az osztalybol csak egy peldany
> lesz a VM-ben, azt meg p[lane nem, hogy mas VM-ekben se lesz.
>
Ilyen garancia nyilván nincs, de definiálni kellene, hogy mit értünk
"adott osztályon" és "az osztályon", illetve milyen környezetben. Nekem
egy osztály egy ClassLoader által betöltött osztályt jelent. Ha másik
tölt be egy ugyanolyan nevű osztályt, akkor az már nem ugyanaz,
legfeljebb ugyanúgy hívják (lásd DNS gyorsítótár mérgezés história:
helytől függően vagy a bankodat éred el, vagy a szélhámosokat). Ez
nyilván nem mellékes, de ha a Singleton mintáról szól valami, akkor
célszerű arra fókuszálni, és legfeljebb a lábjegyzetben megjegyezni az
esetleges megvalósítási buktatókat.
A Singleton számomra inkább elv: valamilyen szintű egyediség kell, ennek
a kezelése nem az üzleti logika feladata, hanem egy adott helyen
elérhető metódus biztosítja számunkra, hogy minding ugyanazt az
objektumot adja vissza. Több ilyen adott helyen elérhető metódus lehet,
valószínűleg mindegyik más-más objektumot ad vissza, de egy adott
metódus mindig ugyanazt. Ezen metódus feladatai:
- objektum létrehozása (ezen akár vitatkozni is lehetne, mert tágabb
értelemben akár más által létrehozott objektumot is "publikálhat") -
akár lusta módon
- objektum nyilvántartása
További információk a(z) Javalist levelezőlistáról