Помогите Обращение к плагину.

Blc_Dragon

Активный участник
Пользователь
Баллы
76
Имя в Minecraft
Blc_Dragon
Доброго времени суток, форумчане.

Извечный вопрос(при том банальненький): как ита делаится.

Фишка вот в чем. В отдельном классе есть необходимость обращаться к плагину.

Есть несколько вариантов.
  1. создать метод return plugin; и где надо обратиться - там его и юзать
  2. используя все тот же метод, запихать плагин в отдельное поле класса.
  3. отправлять плагин в конструктор при инициализации плагина, и опять же пихать плагин в поле.
  4. Если есть еще варианты - буду рад их прочитать.
Как будет правильнее (тип быстродейственность\уместность и т.п.)


Лично я склоняюсь ко второму варианту. Но я - это я, а умные и знающие люди - это не я.

Заранее спасибо.
 
Доброго времени суток, форумчане.

Извечный вопрос(при том банальненький): как ита делаится.

Фишка вот в чем. В отдельном классе есть необходимость обращаться к плагину.

Есть несколько вариантов.
  1. создать метод return plugin; и где надо обратиться - там его и юзать
  2. используя все тот же метод, запихать плагин в отдельное поле класса.
  3. отправлять плагин в конструктор при инициализации плагина, и опять же пихать плагин в поле.
  4. Если есть еще варианты - буду рад их прочитать.
Как будет правильнее (тип быстродейственность\уместность и т.п.)


Лично я склоняюсь ко второму варианту. Но я - это я, а умные и знающие люди - это не я.

Заранее спасибо.
Конструктор

private ... plug;
...(... plug){
this.plug = plug;
}
 
Конструктор

private ... plug;
...(... plug){
this.plug = plug;
}
Объяснить приоритетность метода можешь? или это просто "я его юзаю так что вот"
PluginManager pm = getServer().getPluginManager();
myplugin= (myplugin)pm.getPlugin("myplugin");
Каковы плюсы, можно пожалуйста? или это просто "как вариант"?
 
private Main plugin;
public OtherClass(Main main){
this.plugin = main;
}

Main:

....( new OtherClass(this));
я знаю как это делается. я приоритетность спросил (почему этот метод, а не другой. чем он лучше и т.п.)
Меня сейчас интересует наименьшая ресурсозатратность.
 
Я думаю, лучше всего - статичный геттер в главном классе, т.е. так:
Java:
private static MyPlugin instance;

public void onEnable(){
  instance = this;
}

public static MyPlugin getInstance() {
  return instance;
}

Этот метод используется часто, и не только в плагинах. Советую использовать именно его.
Если нужно получить экземпляр главного класса, достаточно будет вызвать Main.getInstance(),
и не нужно плодить кучу переменных в разных классах, делать дополнительные конструкторы, как тут
private Main plugin;
public OtherClass(Main main){
this.plugin = main;
}
 
Я думаю, лучше всего - статичный геттер в главном классе, т.е. так:
Java:
private static MyPlugin instance;

public void onEnable(){
  instance = this;
}

public static MyPlugin getInstance() {
  return instance;
}

Этот метод используется часто, и не только в плагинах. Советую использовать именно его.
Если нужно получить экземпляр главного класса, достаточно будет вызвать Main.getInstance(),
и не нужно плодить кучу переменных в разных классах, делать дополнительные конструкторы, как тут
создать метод return plugin; и где надо обратиться - там его и юзать
Ну да не будем сильно агриться на не внимательность. (или какие там еще траблы).


А я замерил. Люблю пруфы

Итог.
разница между начальным и конечным FreeMemory везде 0. (я так полагаю из-за того что там ссылка на один и тот же объект везде. [да ладна])

По времени: Создание конструктора в 100-500 (я хз откуда такие вариации) раз дольше чем простой вызов через getter MainClass'a.


PluginManager pm = getServer().getPluginManager();
myplugin= (myplugin)pm.getPlugin("myplugin");
Вообще не состоятельный метод. что бы getServer(), надo иметь plugin. (замкнутый круг видим?)
В 35-55 раз дольше чем предыдущий метод.

#getterВлидеры
 
Ну да не будем сильно агриться на не внимательность. (или какие там еще траблы).



А я замерил. Люблю пруфы

Итог.
разница между начальным и конечным FreeMemory везде 0. (я так полагаю из-за того что там ссылка на один и тот же объект везде. [да ладна])

По времени: Создание конструктора в 100-500 (я хз откуда такие вариации) раз дольше чем простой вызов через getter MainClass'a.



Вообще не состоятельный метод. что бы getServer(), надo иметь plugin. (замкнутый круг видим?)
Bukkit.getServer() ><
 
Создание конструктора в 100-500 (я хз откуда такие вариации) раз дольше чем простой вызов через getter MainClass'a.
Такие вариации складываются из создания объекта (выделения под него памяти) и ссылки на него. Ну и геттер (в обоих случаях).
 
Назад
Верх