Javaの変数static
に問題があります。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だけだったので。
インターフェイスの値は、常に抽象クラスですか? – developer
Stateデザインパターンの標準ユースケースのように聞こえます – jay
私のクラス(Main)で宣言されているようなものがあります: public static Connector connector; そして、後で私はこのようなものを持っています: ケース2: Main.connector = new KryoConnector(hostValue); 休憩。 ケース3: Main.connector = new RMIConnector(hostValue); 休憩。 – tommy