Si tengo un objeto de formulario que tiene un árbol de objetos complicado, por ejemplo, una persona que tiene un objeto de información de contacto que tiene un objeto Address que tiene un montón de cadenas - Parece que el objeto necesita estar completamente poblado con objetos componentes antes de que pueda enlazarlo. Entonces, si estoy creando una nueva Persona, necesito asegurarme de que tiene todos los objetos componentes llenos del bate, y si estoy recuperando una Persona de la base de datos, necesito asegurarme de que los objetos que no están poblado de la base de datos se llena con objetos vacíos.Mejores prácticas para la inicialización del árbol de objetos MVC de Spring MVC
Primera pregunta, por supuesto, ¿estoy en lo correcto en mis suposiciones? Parece que si intento enlazar con person.contactInfo.homeAddress.street y no hay ContactInfo, obtengo una excepción de puntero nulo.
En segundo lugar, ¿cuál es la mejor manera de inicializar mi objeto. Puedo pensar en un par de enfoques. Uno es para inicializar todos los objetos miembros en la declaración:
public class Person {
String name;
ContactInfo contactInfo = new ContactInfo();
//getters, setters, etc.
}
public class ContactInfo {
String phone;
Address homeAddress = new Address();
}
y así sucesivamente.
Otro enfoque es tener una PersonFactory que inicialice todo (o tener un método de fábrica Person.getInstance que inicialice todo).
En el caso de recuperar una Persona de la base de datos, el primer enfoque resolverá el problema (es decir, si esta persona no tiene una dirección en la base de datos, el objeto todavía tendrá una Dirección), pero esto significa crear cada objeto dos veces. No estoy seguro de cómo manejar esto de otra manera, excepto para hacer que el DAO llene explícitamente todo, incluso si no se ha recuperado nada de la base de datos. O para dar a la fábrica un método para revisar el objeto y "completar" todo lo que falta.
Sugerencias?
¿Hay alguna manera de proporcionar un método de fábrica para los frijoles de forma de respaldo? – Antoniossss