У меня проблема с переменной static
в java.переменная статического интерфейса Java
Я делаю онлайн-игру, и я предоставил 2 способа связи с сервером.
Для каждого способа связи я создал другой класс, оба из которых реализуют один и тот же интерфейс. После запуска приложения пользователь может выбрать механизм связи.
Для выполнения этой работы я создал переменную 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.
Значения интерфейса CONSTANT, вы имеете в виду абстрактный класс? – developer
Звучит как стандартный пример использования для шаблона государственного дизайна – jay
У меня есть что-то вроде этого, объявленного в одном из моих классов (Main): public static Connector connector; А потом у меня есть что-то вроде этого: case 2: Main.connector = новый KryoConnector (hostValue); break; кейс 3: Main.connector = новый RMIConnector (hostValue); break; – tommy