Ao modelar classes, qual é a maneira preferida de inicializar:
- Construtores ou
- Métodos de fábrica
E quais seriam as considerações para usar qualquer um deles?
Em certas situações, prefiro ter um método de fábrica que retorne nulo se o objeto não puder ser construído. Isso torna o código limpo. Posso simplesmente verificar se o valor retornado não é nulo antes de executar uma ação alternativa, em contraste com a exceção de um construtor. (Eu pessoalmente não gosto de exceções)
Digamos, eu tenho um construtor em uma classe que espera um valor de ID. O construtor usa esse valor para preencher a classe do banco de dados. No caso em que não existe um registro com o ID especificado, o construtor lança um RecordNotFoundException. Nesse caso, terei de incluir a construção de todas essas classes dentro de um bloco try..catch.
Em contraste com isso, posso ter um método de fábrica estático nessas classes que retornará nulo se o registro não for encontrado.
Qual abordagem é melhor nesse caso, construtor ou método de fábrica?