Tyipically the first design pattern most people learn, often wrongly ☺ To give an introduction, we can say that singleton is one of the creational design patterns which ensures only one class instance with single point of access thru entire application. Because it is relatively simple to implement, the Singleton pattern is sometimes misapplied in situations where it is not the most suitable choice. When to use it? Here are the few examples of corrent usage of singleton: Configuration Management Centralized configuration settings for consistent use thru entire application Caching Maintaning Single istance of cached objects for easy and fast acces Logging Ensure unified mechanism to avoid duplication of log files, formats, etc Global State Management Centralized management of the state which is needed to be shared accross the application Resource sharing Thread pools, database connection, I/O operations When not to use it? On the other hand, here are fe...