Классик написания singleton в java выглядит так:
public class SingletonObject
{
private SingletonObject()
{
}
public static SingletonObject getSingletonObject()
{
if (ref == null)
// it ok, we can call this constructor
ref = new SingletonObject();
return ref;
}
private static SingletonObject ref;
}
и мы можем добавить синхронизируемое ключевое слово, если нам нужно его запустить в многопоточных случаях.
Но я предпочитаю писать его как:
public class SingletonObject
{
private SingletonObject()
{
// no code req'd
}
public static SingletonObject getSingletonObject()
{
return ref;
}
private static SingletonObject ref = new SingletonObject();
}
который я считаю более кратким, но, как ни странно, я не видел никакого примера кода, написанного таким образом, есть ли какие-либо плохие последствия, если я написал свой код таким образом?