【问题标题】:Implementing a configurable factory实现可配置工厂
【发布时间】:2010-04-20 09:14:21
【问题描述】:

我很难找出如何在 PHP 的工厂类中实现“可配置”行为。

我有 at 类,它在其构造函数中将另一个类作为参数。 参数类可以在其构造函数中接受多个参数。我的主类的一个实例可能看起来像这样

$instance = new MyClass(new OtherClass(20, true));
$instance2 = new MyClass(new DifferentClass('test'));

这相当笨拙并且有很多问题,因此我想将它移到工厂类中。 问题是这个工厂需要知道如何实例化参数类,因为这个类在构造函数中可以有任意数量的参数。

我希望能够做这样的事情

$instance = Factory::build('OtherClass');
$instance2 = Factory::build('DifferentClass');

让工厂从配置数组或类似的地方检索参数。

【问题讨论】:

  • 如果你想创建一个灵活的工厂类,我认为你应该瞄准工厂而不关心它控制的是什么类。它应该只是旨在控制何时以及如何创建事物,这些属性当然应该是可控的。但是如果工厂是创建“猫”“超级复杂结构”“其他工厂”,那么工厂不应该开车

标签: php configuration factory


【解决方案1】:

如果您将类列表及其构造函数参数存储为数组。比如:

array(
    'OtherClass' => array(20, true),
)

然后您可以使用reflection apinewInstanceArgs 函数构造类。

【讨论】:

  • 这正是我想要的。我实际上已经在代码的其他部分使用了反射 API,所以效果很好。谢谢!
猜你喜欢
  • 2016-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多