Когда использовать? у нас есть много параметров в классе.

Некоторые другие методы (не очень хорошие варианты)

Способ 1: конструкторы телескопов.

Что: Напишите много конструкторов, и каждый из них содержит разное количество параметров.

Почему не хорошо: это не чистый код. Мы должны поддерживать много конструкторов.

Методы 2. Методы JavaBean.

Что: множество методов сеттеров.

Почему нехорошо: поскольку построение разбито на несколько вызовов, JavaBean может находиться в несогласованном состоянии на полпути его построения.

Что имеется в виду под «недействительным состоянием»?

Чтобы понять это, сначала мы должны узнать, что такое состояние.

В википедии в объектно-ориентированном программировании класс — это расширяемый программный код-шаблон для создания объектов, предоставляющий начальные значения для состояния («переменные-члены)и реализации поведения (функции-члены или методы)».

Таким образом, недопустимое состояние = недопустимые данные. Например, объект должен иметь 5 полей. Но мы забыли установить поле, или мы установили неправильное поле. Другой возможный сценарий: мы изменили значение поля после того, как объект был создан в другом месте, это также может вызвать проблему с недопустимым состоянием. Затем этот объект находится в «недопустимом состоянии». Такую ошибку действительно трудно найти.

Поэтому я думаю, что наиболее важным преимуществом является то, что если мы создаем объекты с помощью компоновщика, то мы можем гарантировать, что наши объекты неизменяемы.

В настоящее время функциональное программирование становится горячей темой. Философия функционального программирования заключается в том, что объекты должны быть неизменяемыми. То есть после того, как объект создан, его нельзя изменять. Если вам нужен еще один похожий объект, который имеет только одно отличие, создайте новый.

3. Конструктор

Что: Вместо того, чтобы создавать желаемый объект напрямую, клиент вызывает конструктор (или статическую фабрику) со всеми необходимыми параметрами и получает объект-конструктор.

Почему:

  1. объекты неизменны.
  2. Его легко читать и понимать.

Как создать шаблон строителя?

  1. Создайте публичный внешний класс с приватным конструктором (параметром является конструктор) и приватными полями.
  2. Создайте статический класс построителя с закрытыми полями.
  3. Класс Builder имеет метод сборки, который возвращает внешний класс.

В книге Эффективная Java показан хороший пример, вы также можете проверить код на моем github.

Нам не нужно самим писать билдеры, с ломбоком, просто аннотацией, они сгенерируют билдеры для нас.

Ссылка: Эффективная Java