Использование Singleton не потому, что домену требуется ровно один экземпляр, а для того, чтобы переправить глобальное изменяемое состояние, пока оно выглядит как шаблон проектирования. Подсказка: тесты не могут выполняться изолированно, поскольку оба они затрагивают одно и то же изменяемое состояние синглтона. Исправление обычно заключается во внедрении зависимости вместо использования статического getInstance().
Пример
// Classic GoF Singleton: enforced by the class itselfpublicclassConfigManager {
privatestaticfinalConfigManagerINSTANCE=newConfigManager();
privateConfigManager() {} // private constructor blocks any other instantiationpublicstaticConfigManagergetInstance() { return INSTANCE; }
}
Итог
Использование Singleton не потому, что домену требуется ровно один экземпляр, а для того, чтобы переправить глобальное изменяемое состояние, пока оно выглядит как шаблон проектирования.
Что означает «злоупотребление синглтоном» и что говорит о том, что … · Sobeso