DEV Community

Cover image for Code Smell 32 - Singletons
Maxi Contieri ⭐⭐⭐
Maxi Contieri ⭐⭐⭐

Posted on • Updated on • Originally published at


Code Smell 32 - Singletons

The most used and (in)famous design pattern in the world is causing us great harm.


  • Coupling

  • Testability

  • Accidental implementation problems.

  • Multi threading issues.

  • Static methods polluting.

  • Object creation contract violation.

  • Bijection mismatch.

  • Memory issues.

  • Premature Optimization.


  1. Avoid it.

  2. Use contextual unique objects.

  3. Benchmark object creation.


  • Database Access

  • Globals

  • Loggers

  • Helpers

Sample Code


God is the archetypical singleton example.



This is a design pattern. We should avoid it by policy.

We can add linter rules for patterns like 'getInstance()' so new developers cannot infect code with this anti-pattern.


  • Globals


This is an historical mistake already acknowledged by the community. Nevertheless, lazy developers bring it again and again. We need to reach a consensus on its drawbacks.


More info


Photo by Maria Teneva on Unsplash

The Diagram is Not the Model. The model is not the diagram. It is an abstraction, a set of concepts and relationships between them.

Eric Evans

Top comments (2)

yoursunny profile image
Junxiao Shi

How is GodFactory supposed to be used if it always throws?

mcsee profile image
Maxi Contieri ⭐⭐⭐

Hi. I changed the example and removed factory usage since I think it was a bit confusing

Join us at DEV You’ve already scrolled down this far, why not join our community of 900k+ developers all learning together?