I’m not a fan of a singleton based solutions. I have always a feeling that they are bad design and I always ask a question: Is it needed? Anyway there are perfectly reasonable arguments to implement them in some scenarios. My singleton implementations varied over time and requirements, but I never though much on the subject…works? it’s needed? OK.
Lately I am working on a lot of sessions, adapters, providers and stuff, while doing some research I have found a nice article explaining differences between a few singleton designs.