Singleton is a design pattern meant to give one & only one instance of an object,other objects can get a reference to this instance through a static method.It required because it give advantage in memory management and for garbage collection.Also restricting the number of instances may be necessary for technological or business reasons for example,we may only want a single instance of a pool of database connections.