
Stewart, Robert wrote:
Jeff Flinn wrote:
That said, in my experience singletons are generally used as a crutch to access global state.
They do access global state, but there often is global state in an application. If Singletons provide the only means to access state, they formalize that access. Singletons can also, using policies, control lifetime, post-destruction behavior, etc. Consequently, Singletons are more than a crutch, though often overused, abused, or misused.
Well, I've yet to come across a case where global state couldn't have been avoided by passing the appropriate objects by value or reference along the function call chain. Doing so avoids the mess that ensues when trying to unit test classes and functions that use supposed singletons/global state. Jeff