0

サーバーにリクエストを送信するプログラムがあります。リクエストにはさまざまな種類があり、それぞれに独自のクラスがあります。たとえばcheckServerOnlineRequest、短いメッセージをサーバーにgetAmountOfGoldRequest送信する や、まったく異なるメッセージを送信する があります。

class CheckServerOnlineReq{
    static final byte requestID = 1;
    byte[] message;

    void setMessage(byte messageNumber){
        message = new byte[2];
        message[0] = messageNumber;
        message[1] = requestID;
    }
}

リクエストを送信するために、Clientクラスがあります。あらゆるタイプのリクエスト(つまり、さまざまなクラス)を受け入れたいメソッドがstatic呼び出されますsend

send()私の質問は、任意のタイプのリクエストを引数として指定できるように のパラメーターを設定するにはどうすればよいかということです。

4

3 に答える 3

1

標準的な方法は、インターフェイスを宣言し、具体的なリクエスト クラスにそのインターフェイスを実装させることです。

public interface IRequest { ... }

public class CheckServerOnlineRequest implements IRequest { ... }
public class GetAmountOfGoldRequest implements IRequest { ... }

その後、メソッドは引数としてsend()受け入れることができます。IRequest

public static void send(IRequest request) { ... }
于 2012-04-11T17:00:26.453 に答える
1

すべてのリクエストをリクエストクラス/インターフェースのサブクラス/実装にし、送信メソッドにリクエストを引数として持たせます。

例: クラス CheckServerOnlineReq は Request.. を拡張/実装します。

send(リクエストリクエスト)

于 2012-04-11T17:01:14.347 に答える