Наблюдатель / посетитель Java, статический посетитель

Итак, у меня есть этот класс, который в основном обрабатывает загрузку сцены. В другом месте программы вы уведомляете посетителя с разными идентификаторами слоя, которые должны быть загружены.

Поскольку у меня есть только один обработчик сцены и по логике не может быть больше, а возможность вызывать метод loadLayer и метод Subscribe должна быть доступна везде, я решил сделать его статическим.

Теперь мой вопрос: считается ли это плохой практикой ООП? Если да, то как мне сделать класс нестатичным и доступным отовсюду без необходимости передавать его через аргументы или каким-либо другим способом.

Спасибо за помощь.

package backend.events;

import java.util.ArrayList;

public final class LoadLayerHandler
{
    private LoadLayerHandler()
    {

    }
    private final static ArrayList<LoadLayerEvent> subscribers = new ArrayList<LoadLayerEvent>();
    x
    public static final void subscribe(LoadLayerEvent subscriber)
    {
        subscribers.add(subscriber);
    }

    public static final void loadLayer(int layer)
    {
        for(LoadLayerEvent i : subscribers)
        {
            if (i.isBlackList() == false)
            {
                for(int j : i.getLayers())
                {
                    if (j == layer)
                    {
                        i.loadLayer();
                        break;
                    }
                    else
                        i.unloadLayer();
                }
            }
            else
            {
                for(int j : i.getLayers())
                {
                    if (j == layer)
                    {
                        i.unloadLayer();
                        break;
                    }
                    else
                        i.loadLayer();
                }
            }
        }
    }

«Считается ли это плохой практикой ООП?» - Да. Например, статические методы сложно тестировать и имитировать. «Итак, как мне сделать класс нестатическим и доступным отовсюду без необходимости передавать его через аргументы или каким-либо другим способом.» - Шаблон Singleton

Turing85 12.04.2018 16:23

Я думал об использовании шаблона singleton, но пришел к выводу, что в конечном итоге это приведет к тому же результату. Создание экземпляра уже ограничено с помощью частного конструктора. Как синглтон изменит ситуацию? Смысл синглтона в том, чтобы ограничить создание экземпляра одним объектом. Этот «глобальный» класс уже создан и уже ограничен для создания экземпляра. Хотите уточнить?

Erik9631 12.04.2018 16:36
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
2
123
0

Другие вопросы по теме