( NoMan | 2016. 08. 26., p – 08:42 )

"az rossz kód, kivéve ha factory és azért static, mert a singleton is rossz kód"

A singleton-t nem gondolnám rossz kódnak. Erőforrás használatakor (adatbázis, fájl, nyomtató...stb), szép és kulturált kódot eredményez. A singleton teljesen OOP szemlélet, csak a példány létrehozás előtt vizsgál egy feltételt, miszerint kell új példány, vagy jó a régi. A kontruktorban ezt már nem tudnád megcsinálni, mert mindenképpen új példányt kapnál vissza, hiába vizsgálsz feltételt.

De persze ez vitatható, mert a kontruktornak eleve nem lehet feladata az erőforrás lefoglalása, pl adatbázis kapcsolódás esetén, nem kapcsolódhat, arra legyen egy külön connect metódus. Ez akár igaz is lehet, de DB osztály nem példányosít az ember csak úgy heccből, tehát úgyis kapcsolódik, vagyis totál felesleges külön metódus hívásra tenni, ha a konstruktor is meghívhatja. És ha az egész singleton, akkor a konstruktor kapcsolódik, ha pedig már kapcsolódik, akkor az ezzel járó kézfogások oda-vissza, nem terhelik a végfelhasználók 100-200ms várakozással.