如何将其转移到服务提供商?
class AbstractFactory
{
/** @var array */
private $factories = [
"Generic" => Generic::class,
"first" => first::class,
"second" => second::class,
"third" => third::class,
];
public function __call($name, $arguments)
{
if (!isset($this->factories[$name])) {
throw new \Exception("Factory not found for type: $name");
}
$factory = app($this->factories[$name]);
return $factory->create(...$arguments);
}
}
现在每个工厂都有不同的接口实现。
对,现在我按如下方式使用这个工厂。
abstract AbstractClass{
public function __construct()
{
$this->eventFactory = new AbstractFactory();
}
}
我们知道我们无法实例化抽象类。 有什么解决办法吗?