A short and very enjoyable read by Uncle Bob on singletons:

Do you recognize this: ``` public class X { private static X instance = null; private X() {} public static X instance() { if (instance == null) instance = new X(); return instance; } // more methods... } ``` Of course. That's the Singleton pattern from the GOF book. I've always heard we shouldn't use it. Why shouldn't we use it? Because it makes our systems hard to test. It does? Why is that? ....

You can read the whole conversation on http://blog.cleancoder.com/uncle-bob/2015/07/01/TheLittleSingleton.html