При моделировании классов, какой предпочтительный способ инициализации:
- Конструкторы, или
- Фабрика Методы
И каковы были бы соображения для использования любого из них?
В определенных ситуациях я предпочитаю иметь фабричный метод, который возвращает ноль, если объект не может быть построен. Это делает код аккуратным. Я могу просто проверить, не является ли возвращаемое значение нулевым, прежде чем предпринимать альтернативное действие, в отличие от выдачи исключения из конструктора. (Лично я не люблю исключения)
Скажем, у меня есть конструктор класса, который ожидает значение id. Конструктор использует это значение для заполнения класса из базы данных. В случае, когда запись с указанным идентификатором не существует, конструктор создает исключение RecordNotFoundException. В этом случае мне придется заключить конструкцию всех таких классов в блок try..catch.
В отличие от этого у меня может быть статический метод фабрики для тех классов, который будет возвращать ноль, если запись не найдена.
Какой подход лучше в этом случае, конструктор или фабричный метод?