The "better" singleton pattern is not to use one.
The approach that you describe, like all approaches that create the singleton via static initialization, is extremely hard to debug.
Instead, use dependency injection (with or without a framework such as Spring).