Beware singletons
From CSSEMediaWiki
Revision as of 02:11, 5 October 2008 by RobertLechte (Talk | contribs)
The Singleton design pattern has several apparent advantages. The programmer can be sure that only one instance will exist. That instance is static. This saves the mess of having to pass around many references to the object. Also, lazy initialization is an inherent part of the pattern.
However, these advantages can tempt the programmer to make unwise design decisions.
- The assumption that only one instance will ever be required can be shortsighted. For example, one may have a settings object as a singleton. But if one later wishes to extend the software to run multiple objects each with their own settings, much painstaking refactoring will be required.
- If you're using the static nature of the pattern to avoid passing around many references, it's a sign you might be overusing that class, and not following the maxim of Tell, don't ask.