Stop Using the Singleton Pattern
The Singleton pattern looks simple and useful.
It is also one of the most common causes of hidden design problems in software systems.
What Singleton Does
Singleton ensures that a class has only one instance and that this instance can be accessed globally.
Logger.getInstance().log("Hello");
One instance. Global access.
The Real Issue
Singleton is just global state.
Any part of the code can access it, change it, and depend on it without being explicit. This makes systems harder to understand, test, and change.
Why Senior Engineers Avoid It
Singleton often causes:
- Hidden dependencies
- Difficult unit testing
- State leaking across requests
- Tight coupling between classes
What looks convenient early becomes technical debt later.
A Better Approach
Instead of accessing global objects, pass dependencies explicitly.
This makes dependencies visible, code easier to test, and systems more flexible.
A Simple Rule
If passing a dependency feels annoying, the solution is better design — not a Singleton.
Top comments (0)