【发布时间】:2022-08-31 13:56:52
【问题描述】:
我有一个我无法解决的困境。 在这种情况下,我应该在方法参数或父构造函数中传递对象吗?
第一个想法:
public class TempChannelsPlugin extends JolssyPlugin {
private JDA client;
private TempChannelsListener listener;
private JdaCommandManager jdaCommandManager;
@Inject
public TempChannelsPlugin(JDA client, JdaCommandManager jdaCommandManager, TempChannelsListener listener) {
super(Category.UTILITIES, "Temporary Channels");
this.client = client;
this.jdaCommandManager = jdaCommandManager;
this.listener = listener;
}
@Override
protected void setup() {
this.registerListener(this.client, this.listener);
}
}
在 JolssyPlugin 中:
protected void registerListener(JDA client, ListenerAdapter listenerAdapter) {
this.registerListeners(client, listenerAdapter);
}
第二个想法:
public class TempChannelsPlugin extends JolssyPlugin {
private JDA client;
private TempChannelsListener listener;
private JdaCommandManager jdaCommandManager;
@Inject
public TempChannelsPlugin(JDA client, JdaCommandManager jdaCommandManager, TempChannelsListener listener) {
super(client, Category.UTILITIES, "Temporary Channels");
this.jdaCommandManager = jdaCommandManager;
this.listener = listener;
}
@Override
protected void setup() {
this.registerListener(this.listener);
}
}
在 JolssyPlugin 中:
protected void registerListener(ListenerAdapter listenerAdapter) {
this.registerListeners(this.client, listenerAdapter);
}
这两种情况有什么区别?为什么我应该支持一个案例而不是另一个案例?
请注意,我正在使用 Guice 进行 DI
【问题讨论】:
-
也许您应该解释您对这两种方法的保留或担忧。
标签: java oop dependency-injection guice discord-jda