Одиночные элементы, как так часто говорят, являются плохим проектным решением, поэтому как необходимо разработать приложение, когда Вы хотите избежать их?
вы можете использовать такие концепции, как Внедрение зависимостей , чтобы внедрить вам услуги, от которых вы зависите (в основном синглтоны, которые вы используете), вместо предоставление глобальной ссылки на них
Мои 2 цента.
Просто спроектируйте свое приложение таким образом, чтобы действительно не имело значения, передано оно синглтону вашему объекту или нет.
Подумайте, есть ли у вас MySingleton.Instance внутри -> это выглядит плохо, и вы тесно связаны с этим. Если вы передали MySignleton в качестве параметра в методе, и он был создан снаружи как MySingleton.Instance или new MySingleton () -> хорошо, я все равно могу имитировать или изменить его, так что это не имеет особого значения.