Quando si modellano le classi, qual è il modo preferito di inizializzare:
- Costruttori, o
- Metodi di fabbrica
E quali sarebbero le considerazioni per l'utilizzo di uno di essi?
In alcune situazioni, preferisco avere un metodo factory che restituisce null se l'oggetto non può essere costruito. Questo rende il codice pulito. Posso semplicemente verificare se il valore restituito non è nullo prima di intraprendere un'azione alternativa, in contrasto con il lancio di un'eccezione dal costruttore. (Personalmente non mi piacciono le eccezioni)
Dire, ho un costruttore in una classe che si aspetta un valore id. Il costruttore utilizza questo valore per popolare la classe dal database. Nel caso in cui non esista un record con l'id specificato, il costruttore genera un RecordNotFoundException. In questo caso dovrò racchiudere la costruzione di tutte queste classi all'interno di un blocco try..catch.
Al contrario di ciò, posso avere un metodo factory statico su quelle classi che restituirà null se il record non viene trovato.
Quale approccio è meglio in questo caso, costruttore o metodo di fabbrica?