es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Debería un constructor de Java contener la lógica para construirse a sí mismo?

Estoy trabajando en un proyecto de Java en el que recibo algunos objetos JSON y luego debo recorrerlos para crear un objeto de dominio que luego necesito procesar aún más. Actualmente, el constructor de este objeto está haciendo mucho trabajo para crear una instancia, se ve algo así:

public class DomainObject {
    private String field1;
    private List<differentobject> objectList;
    public DomainObject(ObjectFromJson obj1, ObjectFromJsonV2 obj2) {
        // hacer un montón de análisis para crear los nuevos objetos para la lista y generar datos para los campos
    }
}

Esto no parece una buena práctica. No es fácil de probar ni de hacer seguimiento de registros. El problema es que realmente no sé dónde sería mejor hacer esto. ¿Un método estático que pertenezca a esta clase? Tampoco parece apropiado usar un constructor o fábrica aquí, ya que solo necesito crear este tipo de objeto. Estaba considerando simplemente hacer la creación del objeto en el método que invoca inicialmente el constructor de DomainObject, pero dado que hay dos lugares en mi código donde esto ocurre, sería repetir el mismo código de creación de objetos.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Como experto en TI especializado en Java y construcción de objetos, recomendaría utilizar una clase o método separado para manejar la creación de la instancia de DomainObject. Esto facilitará la prueba y el mantenimiento del código.

    Una opción es crear una clase o método separado que reciba los objetos JSON y sea responsable de crear la instancia de DomainObject. Esta clase o método podría ser llamado desde ambos lugares en el código donde se necesita la instancia de DomainObject, eliminando la necesidad de repetir el código de creación de objetos.

    Otra opción es utilizar un patrón de construcción (builder pattern) para crear la instancia de DomainObject. Esto implicaría crear una clase constructora que tenga métodos para establecer los diferentes campos de DomainObject, y luego usar el constructor para crear la instancia. Si bien un constructor puede no ser necesario para este caso específico, es un buen patrón a tener en cuenta para proyectos futuros.

    En general, la clave es mantener el código modular y organizado, para que sea fácil de probar y mantener. Al separar la lógica de creación de objetos del constructor, se puede hacer que la clase DomainObject sea más flexible y más fácil de trabajar a largo plazo.

Comments are closed.