0

アプリケーション内でいくつかのテストを実行しますが、その前に、応答情報(実行ディレクトリ、使用済みリソースなど)を初期化する必要があります。

特定のポイントの後、実行しようとしているテストタイプを識別できるようになるため、適切な応答インスタンスが必要になりますが、これにより、古いオブジェクトから新しいオブジェクトにフィールドを手動でコピーする必要があり、バグが発生します。物事が変わるとき。

たとえば、次のクラスがあるとします。

class BaseResponse{
    private int port;
    private int trials;
    protected BaseResponse(BaseResponse response){
        this.port = response.port;
        this.trials = response.port;
    }
}
class TcpResponse extends BaseResponse{
    public TcpResponse(BaseResponse response){
        super(response);
    }
    private int tcpSpecificMetric;
}

したがって、最初にBaseResponseクラスを初期化して入力し、TCPテストを実行することがわかったら、新しいクラスを初期化する必要がありますTcpResponse

誰かがこれのための良いデザインについてアドバイスしますか?前もって感謝します。

4

1 に答える 1

1

BaseResponse渡されたパラメーターに基づいてさまざまなタイプの を作成する方法を知っているファクトリ (別名仮想コンストラクター) またはビルダーを記述します。

public class BaseResponseFactory {
    private static BaseResponseFactory INSTANCE = new BaseResponseFactory();

    private BaseResponseFactory() {}

    public static BaseResponseFactory getInstance() { return INSTANCE; }

    public BaseResponse create(int port, int trials) { return new BaseResponse(port, trials); }

    public BaseResponse create(int port, int trials, int tcpMetric) { return new TcpResponse(port, trials, tcpMetric); }
}
于 2012-07-04T12:58:31.757 に答える