I can see the argument against using Singletons just as global variables.
But in many circumstances they are useful. The most obvious two situations I use them are in:
- Log objects.
- Database handles.
Passing a database handle to all methods, or to multiple objects gets sloppy fast - but having a single resource to fetch it from is neat.
Similarly with debug files; although they are sometimes abused when you realise you need more than one logfile...
| [reply] |
I can easily think of two situations where those have driven me MAD.
I need to connect to a different dateabase than I used to for party of an application. I have to change which variable names I'm using to use the right database.
I wrote one app, where it had a kernel so to speak, w/ a logger attached. Creating a new kernel would create a second running copy of everything, 'cept the logger, 'cause it was a singleton. Grrr!
Don't privatize your constructors! If I want a shared object, good, if not, it's just as good. The only thing I ever want globals are things like, numbers. 1 only has one value. 1!
----
Give me strength for today..
I will not talk it away..
Just for a moment..
It will burn through the clouds..
and shine down on me.
| [reply] |