This is one of the simplest, yet very useful design pattern. Singleton design pattern can be used when it is required to create just one object of a class. As an example, if you have a ApplicationManager class in your application where all other components need to get help from, you need to have access to ApplicationManager object. But just think that you need to share some objects through your ApplicationManager. Then of course you do not want to have different object referring to different ApplicationManager objects. You need to have one common object shared with all of them. And singleton pattern is the way to achieve this.
I believe an example code snippet will help a lot in understanding this simply.
public class ApplicationManager {
private static ApplicationManager applicationManager = new ApplicationManager();
private ApplicationManager() { }
public static ApplicationManager getInstance() {
return applicationManager;
}
public void yourMethod() {
//code
}
}
So you see the constructor is private, so no one can initialize an object of ApplicationManager and if they want to use it, can call getInstance() method and use the already created static ApplicationManager object. So no more than one object is created and global access is provided.