Вопрос Как лучше всего реализовать взаимодействие с API (Singleton или ServiceProvider)

Версия Minecraft
1.20.X

Spgames

Пользователь
Сообщения
1
Пишу api под плагин, но не могу определиться с вариантом того, как конечный пользователь должен обратиться к api. Тут либо singleton`ом просто прокидывать это:

Java:
MyAPI.get().doSmth();
Либо через ServiceProvider, где пользователь полученный инстанс прокидывает в нужное поле, а потом это поле инжектит куда надо(в команды, ивенты и тд). Как это в условном LuckPerms сделано:

Java:
Optional<ProviderRegistration<LuckPerms>> provider = getServer().getServiceManager().getRegistration(LuckPerms.class);

if (provider.isPresent()) {

   this.api = provider.get().getProvider();

}
Что из этого вообще выбрать стоит?
 
Хоть вариант с сервисом и более правильный со стороны ООП, я бы скорее сделал просто статический метод для доступа к апи, просто потому что для пользователей апи это проще и очевиднее. К тому же, такой метод может автоматически выбрасывать исключение с понятной ошибкой, типа "апи ещё не загружено", в отличие от сервисов, где это бремя ложится на пользователя, который порой будет очень долго тупить и разбираться, почему его код не работает
 
Назад
Сверху Снизу