Il motivo faresti pensa si voleva fare questo è che ti sei trovato in una situazione in cui tipo di variabile non è contesto sufficiente.
Per esempio, potrei ingannare me stesso nel pensare che ho bisogno di dare ai miei due costruttori della classe Point: uno che funzioni con X e Y, e uno per gradi e radianti. Entrambi potrebbero essere rappresentati come float.
Quindi penso che mi servivano due costruttori con firme identiche (float, float).
Dr.Bloch sottolinea che è meglio per rendere metodi di fabbrica:
public static Point newPointByDegreesAndRadians (float degrees, float radians);
public static Point newPointByXandY (float x, float y);
Per inciso, un'altra alternativa ai metodi di fabbrica è quello di creare tipi che portano il contesto che manca dai tipi di dati, come questo:
public class CoordinatesXY {
float X;
float Y;
...
}
public class CoordinatesDegreesRadians {
float degrees;
float radians;
...
}
public Point (CoordinatesXY coordinates) { ... }
public Point (CoordinatesDegreesRadians coordinates) { ... }
Se pensi che questo sia più chiaro dei metodi di fabbrica è una questione di gusti. In questo caso specifico, il mio sentimento è che le due classi di coordinate sono utili solo se il tuo progetto rende le coordinate utili per conto proprio, separate da un punto a quelle coordinate.
erm, non puoi, puoi? –
Per prima cosa, ti dispiacerebbe mostrarci un esempio che compila? –
Per la cronaca, intendi due costruttori * nella stessa classe * con la stessa firma? – harpo