可以说我有一个很普通:php,如何防止直接类instantiazation?
class Money
{
public __construct($actualCountry)
{
$this->actualCountry = $actualCountry;
}
public function getValute()
{
return according to actual country
}
}
这个类需要创建一次,所以我有一个全球性的工厂:
final class Factory
{
private $money;
public function getMoney()
{
if ($this->money == null)
{
$this->money = new Money(Config::getCountryCode());
}
return $this->money;
}
}
,每当我们想用:
Factory::getMoney()->
但今天我看到了我的同事试图做的事:
(new Money(Config::getCountryCode()))->getValute();
这显然是错误的,不需要多次出现。但是,那么一个班级自己怎么会说“嘿,不要示范我,使用工厂”呢?
我不能把它设置为单,因为那时每次:
Money::getInstance(Config::getCountryCode());
是毫无意义的。
但真正的问题不是因为它可能存在多个 - 它的方式我总是必须从配置中通过当前的国家。 Config
成为什么GlobalConfig
?这就是为什么工厂避免很多参数的传递(如果会有更多的参数Money
?)
我认为...使构造函数私人?您的工厂可以创建它,但没有其他的可以吗? –