Синглтон Резюме:
- Большую часть времени нормальный объект будет работать.
- Будьте осторожны с одиночками.
- Локализуйте взаимодействие как можно больше
Хотя синглтоны - хорошая идея, я склонен просто реализовывать обычный объект и использовать его. Если критически важно, чтобы у меня был только один такой объект, я изменю конструктор, чтобы он вызывал фатальное исключение при создании второго объекта. Различные одноэлементные модули, кажется, мало что делают, кроме добавления зависимости.
Я делаю это, потому что это легко, это работает, и когда в каком-то странном будущем мне нужно работать со вторым объектом в моем приложении, изменения минимизируются.
Мне также нравится локализовать взаимодействие с моими «одноэлементными» объектами - поддерживать взаимодействие в как можно меньшем количестве мест. Таким образом, вместо каждого объекта, имеющего прямой доступ к синглтону, я опосредую все взаимодействие через мой объект «Приложение». Когда это возможно, объект приложения получает данные из «синглтона» и передает их в качестве параметра методу в другие объекты. Ответы от других объектов могут также передаваться в «синглтон». Все эти усилия помогают, когда мне нужно внести изменения в объект «singleton», и когда я хочу повторно использовать другие объекты в другом приложении, которые могут не нуждаться или не иметь возможности использовать оригинальный объект «singleton».