Хотя использование шаблонов проектирования часто помогает в чистом программировании, чрезмерное их использование в случаях, когда в этом нет необходимости, приведет к чрезмерно сложному коду.
Если вы хотите создать единое приложение для вашего приложения, это было бы более выгодно объявить класс или, что лучше, перечисление, которое содержит приложение, которое будет запускаться вашей основной функцией.
Использование перечисления:
public enum Application{
instance;
public void run(){
//do awesome stuff
}
}
Это имеет эффект, что даже при сериализации приложения не может быть продублирована, но также не может обобщать ваше приложение с интерфейсами.
При использовании обычного класса для реализации сингелтона вам нужно сделать конструктор частным или защитить класс от повторного создания экземпляра.
Использование обычного класса с закрытым конструктором:
public class Application{
private static final Application instance = new Application();
private Application(){}
public Application getApplication(){
return instance;
}
public void run(){
//do awesome stuff
}
}
Преимущество этого варианта в том, что класс все еще может реализовывать интерфейсы или расширять классы, например, Runnable. Недостатком будет то, что с помощью сериализации класс все еще может быть создан несколько раз.