Вопрос №643 от пользователя Дмитрий Усков в уроке «Модуль 5. Урок 4. Паттерн проектирования Builder.», курс «Введение в Java»

Дмитрий Усков

Получается, что используя Билдер, можно забыть указать какое-то поле, что в последствии может привести к краху, чего не может быть при использовании конструктора?

2 0

Вячеслав Ковалевский

Вы совершенно правы, билдер в чистом виде не обезопасит от значений null в поле, однако если очень важно иметь поле не null нужно или добавить логику проверки на не null в методе build (что бы не допустить создания объекта с некорректным состоянием) или же использовать проверку корректности состояния объекта в рантаме при помощи сторонних библиотеке и аннотаций (об этом позже).

Т.е. в билдер есть варианты как добавить проверку на валидность всех полей, в то же время в конструкторе нету возможности проверять а не перепутаны ли местами аргументы на входе. Плюс в конструктор так же можно передать null (т.е. не обойтись без тех же самых проверок).

3

Дмитрий Усков

Сегодня заметил случай существенного преимущества билдера: когда надо указать много параметров одного типа и каждый из них является НЕ обязательным

0

Используйте Хекслет по максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Даю согласие на обработку персональных данных, соглашаюсь с «Политикой конфиденциальности» и «Условиями оказания услуг»

Рекомендуемые программы

С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.

Иконка программы Фронтенд-разработчик
Профессия
Разработка фронтенд-компонентов веб-приложений
25 мая 10 месяцев
Иконка программы Python-разработчик
Профессия
Разработка веб-приложений на Django
25 мая 10 месяцев
Иконка программы PHP-разработчик
Профессия
Разработка веб-приложений на Laravel
25 мая 10 месяцев
Иконка программы Node.js-разработчик
Профессия
Разработка бэкенд-компонентов веб-приложений
25 мая 10 месяцев
Иконка программы Fullstack-разработчик
Профессия
Новый
Разработка фронтенд и бэкенд компонентов веб-приложений
25 мая 16 месяцев
Иконка программы Верстальщик
Профессия
Вёрстка с использованием последних стандартов CSS
в любое время 5 месяцев
Иконка программы Java-разработчик
Профессия
Разработка приложений на языке Java
25 мая 10 месяцев
Иконка программы Разработчик на Ruby on Rails
Профессия
Создает веб-приложения со скоростью света
25 мая 5 месяцев