Для чего нужен паттерн программирования Builder? Как написано в некоторых учебниках, он используется для того чтобы предотвратить создание конструкторов для сетера всех вариантов филдов.
Как альтернатива используется внутренний класс Builder, в котором дублируются все филды с дефолтными значениями. В классе есть сеттеры всех филдов.
В чем преимущества использования внутреннего класса Builder, ведь дефолтные значения для всех полей можно объявить в самом классе.
private Double emission = 0d;
...
Соответственно если нужный сеттер не вызван, будет использоваться дефолтное значение?
Ответ
Билдеры необходимы, когда у вас есть класс:
содержащий много полей
поля иммутабельны (final)
не все поля обязательны
Делать конструкторы под все варианты или один конструктор, скажем с 10-ю параметрами, неудобно.
Еще бывает ситуация когда есть некий процесс, на протяжении которого нужно наполнить объект данными (при чем при разных условиях какие-то поля могут быть задействованы, а какие-то - нет), а после этого отдать его иммутабельную версию. В таком случае удобно протаскивать по ходу процесса builder, а когда все будет готово - завершить сборку.
Комментариев нет:
Отправить комментарий