我正在实施构建器,其中通过调用Builder::getProduct()
来检索可交付产品。导演要求各部分建立Builder::buildPartA()
,Builder::buildPartB()
等,以完全构建产品。
我的问题是,一旦生成器通过调用Builder::getProduct()
交付产品,它是否应该重置其环境(Builder::partA = NULL;
,Builder::partB = NULL;
)以便它可以构建另一种产品? (具有相同或不同的配置?)如果构建器在交付产品后重置其构建环境
我问这是因为我使用的PHP其中对象默认是通过引用传递的(nope,我不想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;
}