Итак, у меня есть этот класс, который в основном обрабатывает загрузку сцены. В другом месте программы вы уведомляете посетителя с разными идентификаторами слоя, которые должны быть загружены.
Поскольку у меня есть только один обработчик сцены и по логике не может быть больше, а возможность вызывать метод 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, но пришел к выводу, что в конечном итоге это приведет к тому же результату. Создание экземпляра уже ограничено с помощью частного конструктора. Как синглтон изменит ситуацию? Смысл синглтона в том, чтобы ограничить создание экземпляра одним объектом. Этот «глобальный» класс уже создан и уже ограничен для создания экземпляра. Хотите уточнить?




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