Я реализую конструктор, в котором результат доставляется путем вызова Builder::getProduct()
. Директор просит различные части собрать Builder::buildPartA()
, Builder::buildPartB()
и т. Д., Чтобы полностью построить продукт.
Мой вопрос заключается в том, что после доставки продукта Строителем по вызову Builder::getProduct()
должен ли он сбросить свою среду (Builder::partA = NULL;
, Builder::partB = NULL;
), чтобы он был готов построить другой продукт? (с одинаковой или другой конфигурацией?)
Я спрашиваю об этом, поскольку использую PHP, в котором объекты по умолчанию передаются по ссылке (нет, я не хочу clone
их, поскольку одно из их полей - Resource
). Однако, даже если вы думаете с языковой точки зрения, должен ли Builder перезагружать свою среду сборки? Если ваш ответ «это зависит от случая», какие варианты использования оправдывают перезагрузку среды (и наоборот)?
Для примера кода приведу мой Builder::gerProcessor()
, который показывает, что я имею в виду под перезагрузкой среды
/**
* @see IBuilder::getProessor()
*/
public function getProcessor()
{
if($this->_processor == NULL) {
throw new LogicException('Processor not yet built!');
} else {
$retval = $this->_processor;
$this->_product = NULL, $this->_processor = NULL;
}
return $retval;
}