Uso el patrón de generador para varias clases de mi proyecto (argumentos múltiples, algunos obligatorios, algunos opcionales, etc.). Estas clases son inmutables (sin setters, deep copy for collections getters).Patrón de generador y persistencia
Ahora estoy tratando de almacenar esos objetos en una base de datos utilizando un marco de persistencia que construye objetos con constructor + setters predeterminados. ¡No me gustan mucho mis Constructores!
No quiero degradar esa configuración a POJO y perder las ventajas del diseño actual (flexibilidad, inmutabilidad, seguridad de la construcción).
Me agradaría cualquier comentario sobre las soluciones alternativas que se pueden utilizar en esta situación (podría envolver cada una de estas clases pero eso duplicaría el número de clases y preferiría evitar eso).
En realidad, uno post lo señala como una desventaja específica del patrón del Constructor.
EDITAR
Una answer propone utilizar constructor/setters privadas, sino que sólo funciona si los campos de la clase no son definitivos, que no es mi caso.
edición final
Gracias a todos.
Lo que creo que va a ser mi solución final se parece a esto y funciona bien (para que conste, estoy usando MongoDB + Morfina):
class AClass {
private final String aField;
private final AClass() {
aField = "";
}
//Standard builder pattern after that - no setters (private or public)
}
¿No puedes incluir los setters y el constructor predeterminado pero hacerlos privados? – DaveJohnston
Buena pregunta - Comprobaré que – assylias
Sé que Hibernate puede usar instaladores y constructores privados, solo me pregunta si tiene algo en contra de esto para su caso específico. – DaveJohnston