Это плохая практика программирования, чтобы создать * * * * основной класс в java? - PullRequest
0 голосов
/ 19 апреля 2020

Я подумываю использовать шаблон проектирования Singelton и создать Singelton из моего основного класса. Пока я искал, я нашел некоторые комментарии, что это довольно плохая практика программирования, тем более что объявление метода stati c не отдает должное объектно-ориентированному программированию. У вас есть предложения по улучшению моего кода?

public class MainClass {
private static MainClass instance = new MainClass();

public static MainClass getMainInstance() {
    return instance;
}

public static void main(String[] args) {
    MainClass main = Main.instance;
}
}

Ответы [ 2 ]

1 голос
/ 19 апреля 2020

Хотя использование шаблонов проектирования часто помогает в чистом программировании, чрезмерное их использование в случаях, когда в этом нет необходимости, приведет к чрезмерно сложному коду.

Если вы хотите создать единое приложение для вашего приложения, это было бы более выгодно объявить класс или, что лучше, перечисление, которое содержит приложение, которое будет запускаться вашей основной функцией.

Использование перечисления:

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. Недостатком будет то, что с помощью сериализации класс все еще может быть создан несколько раз.

1 голос
/ 19 апреля 2020

Прежде всего, для одноэлементного объекта, реализуемого в классе, должно быть указано следующее.

  1. он должен иметь весь конструктор, помеченный как частный.
  2. он должен иметь Метод stati c, имеющий логи c для создания объекта ровно один раз.
  3. он должен иметь переменную ссылочного класса stati c для хранения одного возможного экземпляра.

с их помощью мы можем обеспечить объект Singleton, но это не единственный способ, поскольку у нас может быть шаблон проектирования для творчества или шаблон проектирования «Вес в полете» для преодоления вызова метода stati c.

Что касается ключевого слова Stati c, оно все еще использует экземпляр класса объекта. Как мы все знаем, любой объект имеет эквивалентный объект класса Singleton, который создается в куче во время процесса загрузки класса. Так что это не из OOPS.

Надеюсь, это поможет !!!

...