Недавно я изучал шаблоны проектирования с исследовательской группой и пришел к выводу, что шаблон построителя может быть очень полезен для создания сложных объектов, состоящих из многих (потенциально необязательных) частей.
Однако бывает ли когда-нибудь, что строитель делает слишком много? Допустим, у нас есть класс, который имеет много разных комбинаций объектов, есть ли другой шаблон, который лучше подходит для этого, вместо того, чтобы создавать десятки разных конструкторов? Можно ли уменьшить количество необходимых вам билдеров, не создавая полностью специфические билдеры?
Примером, к которому я и моя исследовательская группа постоянно возвращались, был автостроитель, например, на веб-сайте автомобильной компании. У любой автомобильной компании есть десятки автомобилей, каждый из которых имеет множество различных функций, цветов, дополнений и т. д. Насколько я понимаю, ваш конструктор должен быть специфичным для конкретного объекта, который вы создаете, поэтому применение шаблона конструктора к этому примеру даст сотни строители, которые выглядят как «RedSUVWithSunroofBuilder», «BlueSUVWithSunroofBuilder», «RedSUVBuilder» и т. д.
Есть ли какая-то причина, по которой, используя шаблон построителя, я не мог передать некоторые из этих значений, чтобы уменьшить количество построителей, которые мне нужно было бы создать? Например, вместо использования RedSUVWithSunroofBuilder или BlueSUVWithSunroofBuilder по-прежнему подходит шаблон строителя для выполнения SUVWithSunroofBuilder("Red") и SUVWithSunroofBuilder("Blue"), или это больше подходит для другого шаблона?