The singleton pattern restricts the instantiation of a class to one object, which is useful when you need one object to coordinate actions for the system.
The basic idea is that only one instance of a particular class, doing a job, is created for the needs of the program. To ensure that this works, we need mechanisms that prevent the instantiation of the class more than once and also prevent cloning.