2010-09-04 7 views
6

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

AFAIK, в шаблоне Builder, клиент, который создает конкретный объект; то в чем преимущество использования конструктора вместо конструктора с аргументами в создаваемом объекте класса?

ответ

5

Oh! Я понял. Я смотрел на примере Википедии и понял, почему Builder полезен. Это полезно, когда клиент не знает, какие аргументы передаются конструктору, поскольку он очень сложный и, следовательно, не может напрямую вызвать конструктор и получить объект. Следовательно, он просит помощи у Бетонных Строителей, которые знают, какие аргументы передаются конструкторам и, следовательно, получают созданный объект.

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