I have an application which has some classes that handle some specific functions, have a lifetime equal to the application itself, and are meant to be used in many parts of the program. For this last reason i call them Services. For example, the Audio Service plays audio files and does many other things related to audio.
Theese classes are instantiated only once at applications startup and it does not make any sense to have more than one per type.
Since i've read many answers about singletons here on SO where their usage is discouraged, i went on by passing a reference to thoose services when needed. As the project is growing i find myself with many classes which need a service reference on their constructor and in some cases even a facade to those services to avoid adding all the services references.
I think i'm doing it wrong. I think this should be a good use for static/singleton classes.
Is this a correct approach?