2012-06-19 8 views
7

私はExchange Web Services Java APIコードを使い、開発者がメソッドに引数を渡す方法を設計しました。このテクニックの利点を説明するのを手伝ってください。メソッドにパラメータを渡す方法が不思議です

メソッドに処理される型は、メソッドに渡される前にGeneric Wrapperクラスでラップされます。この方法は、HttpWebRequestのオブジェクト上で動作 - [パラメータが定義されるソースからの抜粋である。ここで

class Param<T> { 
    private T param; 
    public T getParam() { return param; } 
    public void setParam(T param) { this.param = param } 
} 

を次のように文字列は、新しいparamが()メソッドに渡されます。
呼び出し元は、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オブジェクトを渡さない - - 開発者は、すべての可能なコードベースの上に繰り返し、このパターンを使用しますが、メソッドのシグネチャで見ることができるように、そのインスタンスは、メソッドに渡されます私はそれには何らかの正当な理由があると思う。しかし、私は利益を見ることができません...啓発してください。

+0

ください指しますか?どうも! – Miquel

+0

リンクは質問にあります – bell0

答えて

4

メソッドの入口では、ラップされたHttpWebRequestインスタンスはnullになると予想されます。これは、メソッド呼び出し中に何か問題が生じたとしても(例外がスローされた場合など)、returnステートメント以外の方法でインスタンスを返す方法です。このパターンは、C#のキーワードoutとやや同じです。また、オブジェクト+エラーステータスを返すために使用することができます

​​

ではなく書き込みより:あなたは、githubのような1つのインスタンスに

Greetings getGreetings() { 
    if (aCondition) { 
    return new Greetings("Hello"); 
    } 
    return null; // caller will have to test a null condition to know it the operation was ok 
} 
+0

これは意味があります、それは変更可能なコンテナを渡しています。 – Ixx

+0

コレクションのように、格納できるタイプを定義するのに役立ちます。 – Ixx

+0

これは本当に汎用ラッパーなしで行うことができますが、そのような場合は、そのようなパターンを使用するオブジェクトごとに専用のコンテナを作成する必要があります... 'T'を 'Object'はるかに安全で読みやすいでしょう。 – Yanflea

関連する問題