Lettura Efficace di Java, sembra che ci siano molti vantaggi, e pochissimi svantaggi, nell'usare metodi di produzione statici. Con metodi factory statici In particolare mi riferisco alla seguenteDevo utilizzare sempre metodi di factory static invece di costruttori?
public class MyClass {
private MyClass() { ... };
public static MyClass getInstance() {
return new A();
}
}
Da Effective Java:
Si noti che un metodo factory statico non è la stessa come il modello Factory Method dal Design Patterns [Gamma95, p. 107]. Il metodo factory statico descritto in questo articolo non ha un equivalente diretto in Design Patterns.
Ora è meglio seguire sempre questa pratica o solo qualche volta?
Se sì quando?
È mai eccessivo fare questo?
È eccessivo quando è eccessivo. Solo tu puoi giudicarlo. In generale ti avvertirei di non seguire * qualche * saggezza ricevuta ciecamente. Di solito si scopre che tutte le qualifiche originali con cui è stata coperta la dichiarazione originale vengono dimenticate, rimane solo la regola, spesso nessuno sa davvero perché. – EJP
In questo caso siamo fortunati poiché il testo originale è conservato in tutta la sua gloria in Articolo 1 efficace di Java. Ma non sono sicuro che la mia interpretazione di ciò sia corretta. – cendrillon
Direi che è generalmente eccessivo, a meno che non si abbia un motivo specifico per voler nascondere il tipo effettivo che si sta creando, che è fondamentalmente quando si vuole usare un modello di fabbrica. Suggerisco che nella maggior parte dei casi non è così. Pensa a come sarebbe la vita, ad esempio se non riuscissi a costruire una stringa o una discussione. – EJP