我正在實施構建器,其中通過調用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;
}