我在java中遇到了一个static
变量的问题。Java静态接口变量
我在做一个在线游戏,我提供了两种与服务器通信的方法。
对于每种通信方式,我创建了一个不同的类,它们都实现相同的接口。在应用程序启动后,用户可以选择通信机制。
为了使这项工作,我创建了一个static
变量的接口和价值是在用户选择通信方法后分配,但我想避免static
字段,什么是最好的办法呢?
下面是代码:
我有它在主类
public class Main extends Application {
public static Connector connector;
}
宣布后来根据用户选择的内容:
private void connectWithServer()
{
String hostValue = serverTextField.getText();
switch (serverComboBox.getSelectionModel().getSelectedIndex())
{
case 0:
Main.connector=new KryoConnector("127.0.0.1");
break;
case 1:
Main.connector=new RMIConnector("127.0.0.1");
break;
case 2:
Main.connector=new KryoConnector(hostValue);
break;
case 3:
Main.connector=new RMIConnector(hostValue);
break;
}
}
后来我把这样的方法:
Main.connector.createBoard(this);
我在回答看着我想过这样的事情:
public enum ConnectionContext {
INSTANCE;
private Connector connector;
public void setConnector(Connector connector)
{
this.connector=connector;
}
public Connector getConnector()
{
return connector;
}
}
然后,我会调用它的方法是这样的:反正
ConnectionContext.INSTANCE.getConnector().someMethod();
这样我能避免静电,但有以更短的方式参考它?因为之前我只有Main.connector。
接口值是恒定的,你的意思是抽象类? – developer
听起来像一个国家设计模式的标准用例 – jay
我有一个类似于我的一个类(主)中声明的东西: 公共静态连接器连接器; 然后我有这样的事情: 情况2: Main.connector = new KryoConnector(hostValue); 休息;案例3: Main.connector = new RMIConnector(hostValue); 休息; – tommy