Рассматривается ли создание «мастер-класса» с использованием синглтона или чего-то еще? - PullRequest
0 голосов
/ 11 января 2019

Я хочу знать, считается ли код, содержащий «мастер-класс» (класс, который должен иметь только один экземпляр), реализующим шаблон проектирования «Singleton», или существует ли другой шаблон проектирования, соответствующий этой концепции.

Я создал класс "GUI" и класс "MasterControl" Класс «MasterControl» определяет множество методов, которые взаимодействуют с GUI, и содержит один экземпляр «GUI», с которым он работает.

Код для демонстрации основной идеи.

public static void main(String[] args){
    MasterControl controller = new MasterControl();
}

public class MasterControl{
    private GUI Servant;

    public MasterControl(){
        Servant = new GUI(this);
    }
}

public MasterControl(){
    Servant = new GUI(this);
}

public class GUI{
    GUIComponent c;
    MasterControl master;

    public GUI(MasterControl master){
        this.master = master;
        c = new GUIComponent(master);
    }
}
//And so on

1 Ответ

0 голосов
/ 11 января 2019

Шаблон проектирования Singleton означает, что невозможно создать более одного экземпляра этого класса. Код, содержащий «мастер-класс», обычно представляет собой класс, представляющий начальную точку кода, это правильный формат для его инициализации один раз, но технически ничто не мешает нам создать еще один его экземпляр. Наличие мастер-класса не обязательно делает его шаблоном проектирования Singleton.

Классическая реализация шаблона проектирования Singleton включает в себя закрытый конструктор со своим собственным методом getter, а также статическую и неинициализированную переменную экземпляра, которая будет представлять отдельный экземпляр класса Singleton. Этот дизайн делает конструктор доступным только через метод getter и поэтому может быть запрограммирован на вызов только при первом вызове метода getter. Это инициализирует переменную экземпляра, которая затем будет возвращена. Это будет выглядеть примерно так:

class Singleton {
    private static Singleton instance;
    private Singleton() {}

    public static Singleton getInstance() {
        if(instance == null) {
            instance = new Singleton();
        return instance;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...