在函数中传递全局变量作为参数,或者在构造函数中初始化它



假设我们有一个FruitFactory类,它基于可以全局访问的查询参数$type创建水果。

以下哪种方法更好?(或者,如果有其他更好的方法,请告诉我(。

在函数中传递全局变量作为参数有意义吗?(如第一种方法(

还是只调用函数并让它负责类型的全局变量更好。

class FruitFactory
{
public function create($type)
{
if($type == 'Apple')
{
return new Apple();
}
}
}
$fruit = new FruitFactory();
$type = $_GET['type'];
$result = $fruit->create($type);

class FruitFactory
{
protected $type;
public function __construct()
{
$this->type = $_GET['type'];
}
public function create()
{
if($this->type == 'Apple')
{
return new Apple();
}
}
}
$fruit = new FruitFactory();
$result = $fruit->create();

第一个例子是更好的实现,原因有很多。你的问题具体涉及灵活性。第一个例子只需要一个类型值(它可以来自任何地方,包括全局状态(。而第二个例子需要一个特定的全局状态值,这使得它的使用灵活性大大降低。

相关内容

最新更新