This pattern is one of the best known patterns. This pattern allows only a single instance of itself to be created and gives access to this instance.
Usually you can create it this way:
public class Singleton
{
private Singleton()
[...]
Normally when designing some parts of the application, one classes is always depends on the other classes. For example, business logic classes (BL) are depend on data access classes (DAL).
This dependence can be in very different ways, for example, BL can call static methods of DAL, or create instance of DAL every time it needs [...]