当我的所有对象创建参数都定义良好时,工厂方法很有效。但是,使用遗留代码时,默认情况似乎是“无声地”失败'或编写代码结构,防止无效数据到达工厂方法。
工厂方法中的switch语句的 x := 15deg
`y := 4 * (x + 15)
情况通常是什么?
以下示例......
default:
答案 0 :(得分:2)
抛出InvalidArgumentException
。有人试图实例化你工厂不了解的一种物体。
答案 1 :(得分:0)
如果我正确理解
class Factory
{
private $_classes = array();
function getObject($param,$constParam = null)
{
//check exist object exist
if(isset($this->_classes[$param])) {
return $this->_classes[$param];
}
$className = strtoupper($param);
//check class exist
if(!class_exists($className)) {
return new fakeClass(); //or exception
}
// if don't passed params to construct
if(is_null($constParam)) {
$this->_classes[$param] = new $className();
return $this->_classes[$param];
}
// else params passed to construct
$this->_classes[$param] = new $className($constParam);
return $this->_classes[$param];
}
}
它是对象的原始实现函数getter ...如果我正确理解你。