Uso il pattern Builder per diverse classi del mio progetto (più argomenti, alcuni obbligatori, alcuni facoltativi, ecc.). Queste classi sono immutabili (nessun setter, copia profonda per i getter di raccolta).Builder Pattern and Persistence
Ora sto cercando di memorizzare quegli oggetti in un database utilizzando un framework di persistenza che costruisce oggetti con costruttore + setter predefinito. Non gli piacciono molto i miei Costruttori!
Non voglio degradare tale configurazione ai POJO e perdere i vantaggi del design attuale (flessibilità, immutabilità, sicurezza di costruzione).
Sarei lieto di ricevere qualsiasi feedback su soluzioni alternative che possono essere utilizzate in questa situazione (potrei completare ognuna di queste classi, ma questo raddoppierà il numero di classi e preferirei evitarlo).
Uno post indica effettivamente uno svantaggio specifico del modello di generatore.
EDIT
Una answer propone di utilizzare costruttore privato/setter, ma che funziona solo se i campi della classe non sono definitive, che non è il mio caso.
montaggio finale
Grazie a tutti.
Quello che penso sarà la mia soluzione finale assomiglia a questo e funziona bene (per la cronaca, sto usando MongoDB + Morphia):
class AClass {
private final String aField;
private final AClass() {
aField = "";
}
//Standard builder pattern after that - no setters (private or public)
}
Non puoi includere setter e costruttore predefinito ma renderli privati? – DaveJohnston
Buona domanda - Controllerò che – assylias
So che Hibernate può usare setter e costruttori privati, mi chiedo solo se hai qualcosa contro questo per il tuo caso specifico. – DaveJohnston