Le richieste http devono essere nel costruttore o in una funzione statica? [chiuso]

0

Che è convenzionale? Ad esempio, questo è nel costruttore:

public class Foo {
...
    public Foo(...) {
        // http requests
    }
...
}

e questo è nel metodo statico:

public class Foo {
...
    public Foo(...) {
        ...
    }

    public static Foo get(...) {
        // http requests
        return Foo(...);
    }
...
}

Ci sono vantaggi / svantaggi per entrambi? (threading, speed?)

    
posta umop aplsdn 29.10.2015 - 22:44
fonte

1 risposta

4

C'è un consenso generale che un costruttore non dovrebbe mai lanciare un'eccezione in Java. Può causare problemi con il tentativo di recupero da new . Puoi, ma è uno di quelli "cerca di evitarlo se può essere fatto in modo sensato".

In questo senso, il Generatore statico (che chiami get(...) ) è probabilmente un approccio migliore da seguire. Ciò ti consente di costruire e disporre / chiudere correttamente le risorse per invocare http e gestire le eccezioni (cosa succede se questa richiesta fallisce? O quella successiva?)

Con un approccio Builder, dovresti considerare di rendere privato il costruttore in modo da poter garantire che lo stato di Foo sia costruito correttamente dal metodo get(...) , se è stato creato affatto.

Per threading e velocità? Non c'è davvero alcuna differenza. È interamente un problema fare in modo che le eccezioni vengano gettate in una circostanza non sorprendente e qualsiasi risorsa (le richieste web) viene chiusa correttamente nel caso in cui qualcosa vada storto.

    
risposta data 29.10.2015 - 22:57
fonte

Leggi altre domande sui tag