Страницы

Поиск по вопросам

пятница, 2 ноября 2018 г.

Использование паттерна 'Builder'

Для чего нужен паттерн программирования Builder? Как написано в некоторых учебниках, он используется для того чтобы предотвратить создание конструкторов для сетера всех вариантов филдов.
Как альтернатива используется внутренний класс Builder, в котором дублируются все филды с дефолтными значениями. В классе есть сеттеры всех филдов.
В чем преимущества использования внутреннего класса Builder, ведь дефолтные значения для всех полей можно объявить в самом классе.
private Double emission = 0d; ...
Соответственно если нужный сеттер не вызван, будет использоваться дефолтное значение?


Ответ

Билдеры необходимы, когда у вас есть класс:
содержащий много полей поля иммутабельны (final) не все поля обязательны
Делать конструкторы под все варианты или один конструктор, скажем с 10-ю параметрами, неудобно.

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

Комментариев нет:

Отправить комментарий