私はExchangeWebサービスのJavaAPIコードを調べていて、開発者がメソッドに引数を渡す方法の設計上の選択を見ました。テクニックの利点を説明するのを手伝ってもらえますか?
メソッドによって処理される型は、メソッドに渡される前にGeneric Wrapperクラスによってラップされます。たとえば、メソッドがStringで機能する場合、新しいParam()は、Paramが次のように定義されているメソッドに渡されます。続く
class Param<T> {
private T param;
public T getParam() { return param; }
public void setParam(T param) { this.param = param }
}
ソースからのスニペットは次のとおりです-メソッドはHttpWebRequestオブジェクトで機能します。
呼び出し元は、Paramのインスタンスを作成します。つまり、HttpWebRequestクラスによって制限されます。次に、メソッドのシグネチャでわかるように、そのインスタンスがメソッドに渡されます-
protected HttpWebRequest emit(OutParam<HttpWebRequest> request)
throws Exception {
request.setParam(this.getService().prepareHttpWebRequest());
OutputStream urlOutStream = request.getParam().getOutputStream();
EwsServiceXmlWriter writer = new EwsServiceXmlWriter(this.service,urlOutStream);
this.writeToXml(writer);
urlOutStream.flush();
urlOutStream.close();
writer.dispose();
request.getParam().executeRequest();
if(request.getParam().getResponseCode() >= 400)
{
throw new Exception("The remote server returned an error:("+request.getParam().getResponseCode()+")"+request.getParam().getResponseText());
}
return request.getParam();
}
次に、HttpWebRequestオブジェクトを渡さないのはなぜですか?開発者はコードベース全体でこのパターンを繰り返し使用しているため、それには何らかの正当な理由があると思います。しかし、私にはその利点がわかりません...啓蒙してください。