Al modelar clases, cuál es la forma preferida de inicializar:
- Constructores, o
- Métodos de fábrica
¿Y cuáles serían las consideraciones para usar cualquiera de ellos?
En ciertas situaciones, prefiero tener un método de fábrica que devuelva nulo si el objeto no se puede construir. Esto hace que el código sea ordenado. Simplemente puedo verificar si el valor devuelto no es nulo antes de tomar una acción alternativa, en contraste con lanzar una excepción del constructor. (Personalmente no me gustan las excepciones)
Digamos que tengo un constructor en una clase que espera un valor de id. El constructor usa este valor para completar la clase desde la base de datos. En el caso de que no exista un registro con la identificación especificada, el constructor lanza una excepción RecordNotFoundException. En este caso, tendré que incluir la construcción de todas esas clases dentro de un bloque try..catch.
En contraste con esto, puedo tener un método de fábrica estático en esas clases que devolverá nulo si no se encuentra el registro.
¿Qué enfoque es mejor en este caso, constructor o método de fábrica?