Why is Singleton often called an "anti-pattern"?
Singleton is often considered an anti-pattern because of its side effects on scalability and testing:
Global state
Singleton turns into a "hidden global variable." This makes it hard to track who changes the object's state and where. It breaks the isolation of components.
Testing difficulties
It is hard to replace with mocks because the instance is fixed. In unit tests you have to reset the state manually or use reflection.
Violation of the single responsibility principle
The class solves a business task and manages its own lifecycle at the same time, which complicates the architecture.
Hidden dependencies
Code that uses Singleton becomes implicitly dependent on it, which hurts readability and reuse.
Conclusion: Singleton is useful for limited tasks (such as loggers), but overusing it leads to implicit dependencies, hard testing, and a fragile architecture.
Short Answer
Interview readyA concise answer to help you respond confidently on this topic during an interview.