The Singleton pattern has two primary criteria for applicability:
The class should have exactly one instance which should be accessible from a method in the class.
The class can be subclassed, and clients can use the subclass as an instance of the superclass without having to change any
The first criterion more or less defines the nature of the Singleton pattern.
The second criterion considers issues of reuse. In many cases there is more than one way to solve the immediate problem.
You choose your pattern more for how easily it can be modified within your system rather than for what it does.
clients: Any object or class outside the pattern; generally one that only knows about the public interface
the pattern and its classes present, rather than about its private implementation.