При моделюванні класів, який є кращим способом ініціалізації:
- Конструктори, або
- Заводські методи
І які б були міркування щодо використання будь-якого з них?
У певних ситуаціях я вважаю за краще використовувати заводський метод, який повертає null, якщо об'єкт неможливо побудувати. Це робить код акуратним. Я можу просто перевірити, чи повернене значення не є нульовим перед тим, як робити альтернативні дії, на відміну від викидання виключення з конструктора. (Я особисто не люблю винятків)
Скажімо, у мене є конструктор класу, який очікує значення id. Конструктор використовує це значення для заповнення класу з бази даних. У випадку, коли запису із вказаним ідентифікатором не існує, конструктор видає RecordNotFoundException. У цьому випадку мені доведеться докласти конструкцію всіх таких класів у блоці спробувати ..
На відміну від цього, я можу мати статичний заводський метод для тих класів, який поверне нуль, якщо запис не буде знайдено.
Який підхід у цьому випадку кращий, конструктор чи заводський метод?