Вопросы с тегом «builder-pattern»

31
Является ли «StringBuilder» приложением шаблона проектирования Builder?

Ограничен ли шаблон «Строитель» обращением к анти-шаблону «телескопический конструктор», или можно сказать, что он также решает более общую проблему сложного создания неизменяемых объектов? У StringBuilderкласса есть слово «строитель» в его имени, но он не имеет ничего общего с телескопическими...

31
Зачем нам нужен класс Builder при реализации шаблона Builder?

Я видел много реализаций шаблона Builder (в основном на Java). Все они имеют класс сущности (скажем, Personкласс) и класс строителя PersonBuilder. Конструктор "складывает" различные поля и возвращает a new Personс переданными аргументами. Зачем нам явно нужен класс построителя вместо того, чтобы...

22
Как я могу продвигать использование шаблона Builder в моей команде?

Наша кодовая база устарела, и новые программисты, как и я, быстро учатся делать это так, как это делается для единообразия. Думая, что мы должны с чего-то начать, я взял на себя реорганизацию класса держателей данных как такового: Удалил методы установки и сделал все поля final(я беру "...

21
Конструктор с множеством параметров в сравнении с шаблоном

Хорошо известно, что если в вашем классе есть конструктор с множеством параметров, скажем, больше 4, то это, скорее всего, запах кода . Вам нужно пересмотреть, удовлетворяет ли класс SRP . Но что если мы создадим объект, который зависит от 10 или более параметров, и в конечном итоге закончим...

20
Заменяют ли именованные аргументы шаблон построителя?

При использовании языка, который поддерживает именованные и необязательные аргументы, шаблон компоновщика больше не имеет практического применения? Строитель: new Builder(requiredA, requiredB).setOptionalA("optional").Build(); Необязательные / именованные аргументы: new Object(requiredA, requiredB,...

20
Почему тип связан с его строителем?

Недавно я удалил свой Java- ответ на Code Review , который начался так: private Person(PersonBuilder builder) { Стоп. Красный флаг. PersonBuilder будет строить Person; это знает о Человеке. Класс Person не должен ничего знать о PersonBuilder - это просто неизменный тип. Вы создали круговую связь...

10
Java: Как реализовать пошаговый конструктор, для которого порядок установки не имеет значения?

Изменить: я хотел бы отметить, что этот вопрос описывает теоретическую проблему, и я знаю, что я могу использовать аргументы конструктора для обязательных параметров, или вызвать исключение времени выполнения, если API используется неправильно. Однако я ищу решение, которое не требует аргументов...

10
Есть ли смысл использовать компоновщики и текучие интерфейсы с инициализаторами объектов?

В Java и C # вы можете создать объект со свойствами, которые можно установить при инициализации, либо определив конструктор с параметрами, определив каждое свойство после создания объекта, либо используя шаблон интерфейса Builder / Fluid. Однако в C # 3 были введены инициализаторы объектов и...