Cześć,
Singleton daje możliwość zwracania tylko jednej instancji danej klasy, która jest ogólno dostępna. Czyli np dobre jest do tworzenia połączenia z bazą. Gdyż zawsze chcemy otrzymać ten sam obiekt.
Przyrównując dwa obiekty stworzone z singletona otrzymamy to samo.
Sam singleton jest uznawany jako antywzorzec łamie zasadę SOLID'a,
(S)- jednej odpowiedzialności - klasa powinna mieć tylko jedną odpowiedzialność
(O)otwarte/zamknięte. Przy zmianie wymagań nie powinien być zmieniany stary działający kod, ale dodany nowy które rozszerza zachowanie.