Вообще реализация синглтонов, может быть разная. Та что которая приведена считается канонической реализацией в Java. Но это паттерн, и может быть реализован разными способами. Можно сделать Lazy, Eager, thread safe, enum. Если интересно, как, то советую установить плагин для idea, Singleton чего-то там, не помню. Там около 5 реализаций, кажется. После его подключения можно превратить, классы в синглтоны выбрав один из типов. Ну и подумать над тем, в каких крайних случаях какая реализация может быть предпочтительнее.