シングルトンは、グローバル変数の初期化の順序を指定するのだろう。
factory 関数かな?
確実なタイミングで、リソースの初期化・終了を行う

参照する前に、確実に初期化をしておいてもらいたいのだろう。
複数ファイルの初期化の順序指定が難しいのだろう

Java などは、XML で指定した、各コンポーネントの依存性注入などをする。
処理する前に、各コンポーネントを初期化しておきたいから

まあ、よくわからないので、検索して下さい!